我有这样的查询:
SELECT ItemMaster.ERPItemCode, DistributorStock.Qty
FROM DistributorStock INNER JOIN
ItemMaster ON DistributorStock.ItemMasterId = ItemMaster.Id
WHERE (DistributorStock.DistributionCenterId = 2)
结果附于:
我想更改查询以在列而不是行中显示
Item Code
。我该如何实现?
最佳答案
使用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中找到如何连接字符串。