複数のテーブルからビューを作成する必要があります。ビュー内の列の 1 つは、カンマ区切りの値を持つ文字列として、テーブルの 1 つからの多数の行から構成される必要があります。
これは、私がやりたいことの簡単な例です。
Customers:
CustomerId int
CustomerName VARCHAR(100)
Orders:
CustomerId int
OrderName VARCHAR(100)
Customer と Orders の間には 1 対多の関係があります。したがって、このデータを考えると
Customers
1 'John'
2 'Marry'
Orders
1 'New Hat'
1 'New Book'
1 'New Phone'
ビューを次のようにしたい:
Name Orders
'John' New Hat, New Book, New Phone
'Marry' NULL
注文があるかどうかに関係なく、全員がテーブルに表示されるようにします。
このビューに変換する必要があるストアド プロシージャがありますが、ビュー内でパラメータを宣言してストアド プロシージャを呼び出すことはできないようです。このクエリをビューに取り込む方法について何か提案はありますか?
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 excluded
SELECT @CustomerName=CustomerName FROM Customers WHERE CustomerId=@customerId
SELECT @CustomerName as CustomerName, @Orders as Orders