Использование 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.
Образец, пожалуйста, для моего примера – Tom