我有这样的查询:
SELECT ItemMaster.ERPItemCode, DistributorStock.Qty
FROM DistributorStock INNER JOIN
ItemMaster ON DistributorStock.ItemMasterId = ItemMaster.Id
WHERE (DistributorStock.DistributionCenterId = 2)
附上结果:
我想更改查询以在列中显示Item Code
,而不是在行中。
我怎样才能做到这一点?
答案 0 :(得分:5)
使用PIVOT运算符。如果您的代码列表是动态的,并且在编写查询时您不知道完整列表,则必须使用动态数据透视,请检查此question。
样品:
select 'TotalQty', [DHS20], [DHP12], [DHP10], [DHL12], ...
from
(SELECT ItemMaster.ERPItemCode, DistributorStock.Qty
FROM DistributorStock
JOIN ItemMaster ON DistributorStock.ItemMasterId = ItemMaster.Id
WHERE (DistributorStock.DistributionCenterId = 2)
) src
pivot
(sum(src.Qty)
for src.ERPItemCode in ([DHS20], [DHP12], [DHP10], [DHL12], ...)
) as pvt
您可以根据需要将sum
聚合函数替换为任何其他函数。对于动态查询,您必须在运行时构建查询,从其他查询构建列的列表。您可以在this question中找到如何连接字符串。