我有这样的查询:

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中找到如何连接字符串。

09-04 12:25