2015-06-08 2 views
2

У меня есть запрос, как это:Изменение строки в столбцы в SQL

SELECT ItemMaster.ERPItemCode, DistributorStock.Qty 
FROM DistributorStock INNER JOIN 
ItemMaster ON DistributorStock.ItemMasterId = ItemMaster.Id 
WHERE (DistributorStock.DistributionCenterId = 2) 

прикрепляются Результаты:

enter image description here

Я хочу изменить запрос, чтобы показать Item Code в колонках, а не в строк. Как я могу это достичь?

+0

Образец, пожалуйста, для моего примера – Tom

ответ

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.

Смежные вопросы