将行转换为列SQL Server

时间:2015-11-10 05:13:13

标签: sql-server

我想转换输出,如

BachNo|Release Qty 
----------
A     |10
A     |30
A     |40
B     |90
B     |30

我想将此结构转换为

BatchNO | Qty Release1 | Qty Release2 | Qty Release3
----------------------------------------------------
A       |     10       |    30        |   40
B       |     90       |    30        |  Null

第一个输出中生成的行数是动态的,因此转置输出可以有n个列

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

对于已知数量的列可能,但对于动态列数不太确定。虽然你可以使用这样的东西,然后在处理时进一步拆分它。

SELECT BatchNo , STUFF(( SELECT  ','+ ReleaseQty FROM TableName a
WHERE b.BatchNo = a.BatchNo FOR XML PATH('')),1 ,1, '')  Members
FROM TableName b
GROUP BY BatchNo;

这应该给你一个类似的输出:

BatchNo  | ReleaseQty
-------- | ------------------------
A        |  10,30,40
B        |  90,30