【发布时间】:2015-03-09 13:50:05
【问题描述】:
我的存储过程需要帮助。
我有桌子: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) 如何处理动态数量的供应商 ID 将传递到此过程?
现在,我传递了一个包含 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)
【问题讨论】:
标签: sql sql-server stored-procedures