我的存储过程需要帮助。
我有表:Items
(Id, ItemName
),Suppliers
,Quotes
。
Quotes
表具有以下结构:Id, ItemId, SupplierId, Quote
1)假设我有N个供应商。如何使用以下列生成表:
ItemName Supplier1Quote Supplier2Quote ... Supplier-n-Quote
确切地说,假设我有3个供应商和以下Quote
表:
Id ItemId SupplierId Quote
------------------------------
1 1 1 4.00
2 1 2 5.00
3 2 3 7.00
我想得到:
ItemName Supplier1 Supplier2 Supplier3
--------------------------------------------
ItemName1 4.00 5.00
ItemName2 7.00
2)如何对动态数量的供应商执行相同的操作,这些供应商将被传递到此程序中?
到现在为止,我传递了一个字符串参数,其中包含由suppliersId
划分并包裹的,
并以这种方式获取这些ID(感谢gotqn Can not execute SQL Server stored procedure):
DECLARE @SuppliersIdString VARCHAR(1000)
--SET @SuppliersIdString = ',2,'; --
DECLARE @TempXML XML = CONVERT(XML, '<t>' + REPLACE(@SuppliersIdString, ',', '</t><t>') + '</t>');
WITH DataSource ([SuppliersId]) AS
(
SELECT T.c.value('.', 'VARCHAR(100)')
FROM @TempXML.nodes('/t') AS T(c)
WHERE LEN(T.c.value('.', 'VARCHAR(100)')) > 0
)
这样我得SuppliersId
但不知道下一步该做什么(见问题1)
答案 0 :(得分:-1)
使用SQL Server数据透视表。 MSDN Pivot and Unpivot
select * from Supplier s pivot ( sum (Quote) FOR SupplierId IN ( [1],[2],[3],[4],[5] )) as p