我需要从几个表创建一个视图.视图中的一列必须由一个表中的多个行组成,作为带逗号分隔值的字符串.
这是我想要做的简化示例.
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)