相关疑难解决方法(0)

在SQL视图中使用COALESCE

我需要从几个表创建一个视图.视图中的一列必须由一个表中的多个行组成,作为带逗号分隔值的字符串.

这是我想要做的简化示例.

Customers:
CustomerId int
CustomerName VARCHAR(100)

Orders:
CustomerId int
OrderName VARCHAR(100)
Run Code Online (Sandbox Code Playgroud)

客户和订单之间存在一对多的关系.所以给出了这些数据

Customers
1 'John'
2 'Marry'

Orders
1 'New Hat'
1 'New Book'
1 'New Phone'
Run Code Online (Sandbox Code Playgroud)

我希望视图是这样的:

Name     Orders
'John'   New Hat, New Book, New Phone
'Marry'  NULL
Run Code Online (Sandbox Code Playgroud)

因此无论他们是否有订单,每个人都会出现在表格中.

我有一个存储过程,我需要转换到这个视图,但似乎你不能声明参数并在视图中调用存储过程.有关如何将此查询添加到视图中的任何建议?

CREATE PROCEDURE getCustomerOrders(@customerId int)
AS
   DECLARE @CustomerName varchar(100)
   DECLARE @Orders varchar (5000)

   SELECT @Orders=COALESCE(@Orders,'') + COALESCE(OrderName,'') + ',' 
   FROM Orders WHERE CustomerId=@customerId

   -- this has to be done separately in case orders returns NULL, so no customers are …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server coalesce sql-server-2008 sql-view

9
推荐指数
2
解决办法
7657
查看次数

标签 统计

coalesce ×1

sql-server ×1

sql-server-2008 ×1

sql-view ×1

t-sql ×1