Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL Server过程中动态生成列_Sql_Sql Server_Stored Procedures - Fatal编程技术网

在SQL Server过程中动态生成列

在SQL Server过程中动态生成列,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我需要有关存储过程的帮助 我有表:项目Id、项目名称、供应商、报价 Quotes表具有以下结构:Id、ItemId、SupplierId、Quote 我假设我有N个供应商。如何生成包含以下列的表: ItemName Supplier1Quote Supplier2Quote ... Supplier-n-Quote 确切地说,假设我有3家供应商,并有以下报价表: 我想得到: ItemName Supplier1 Supplier2 Supplier3 ----------

我需要有关存储过程的帮助

我有表:项目Id、项目名称、供应商、报价

Quotes表具有以下结构:Id、ItemId、SupplierId、Quote

我假设我有N个供应商。如何生成包含以下列的表:

ItemName   Supplier1Quote   Supplier2Quote  ...  Supplier-n-Quote
确切地说,假设我有3家供应商,并有以下报价表:

我想得到:

ItemName   Supplier1   Supplier2  Supplier3
--------------------------------------------
ItemName1  4.00        5.00
ItemName2                         7.00 
2如何对动态编号的供应商执行相同操作,哪些Id将被传递到此程序中

现在,我传递了一个字符串参数,该参数包含suppliersId除以并包装为,并通过gotqn以这种方式获得这些Id:

这样我得到了SuppliersId,但不知道下一步该做什么请参见问题1使用SQL Server pivot

ItemName   Supplier1   Supplier2  Supplier3
--------------------------------------------
ItemName1  4.00        5.00
ItemName2                         7.00 
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
)
select * from Supplier s pivot ( sum (Quote) FOR SupplierId   IN ( [1],[2],[3],[4],[5] )) as p