SQL запрос объединения двух столбцов PIVOT - PullRequest
0 голосов
/ 19 июня 2020
select pvtMonth.CardName, [1] as [Jan Sales], [2] as [Feb Sales], [3] as [Mar Sales], [4] as [Apr Sales], [5] as [May Sales], 
[6] as [Jun Sales], [7] as [Jul Sales], [8] as [Aug Sales], [9] as [Sep Sales], [10] as [Oct Sales], [11] as [Nov Sales], [12] as [Dec Sales] from 
(
select X.CardName, SUM(X.[Total Sales S$]) as [Sales $] , X.Month from Data X group by X.CardName ,X.Month
) X PIVOT 
(
    sum(X.[Sales $])
    FOR [Month]
    IN ( [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12] )
) AS pvtMonth order by pvtMonth.CardName asc 

enter image description here

теперь мне нужно добавить еще один под названием «Jan Gp», имя столбца - «X.Gp». Как обновить мой запрос. Мне нужен набор результатов, как показано ниже

enter image description here

1 Ответ

2 голосов
/ 19 июня 2020

Я бы рекомендовал использовать условное агрегирование вместо синтаксиса pivot. Он намного более гибкий (и, по крайней мере, не менее эффективен). Кажется, вам нужно что-то вроде:

select 
    cardName,
    sum(case when month = 1 then [Total Sales S$]  end) [Jan Sales $],
    sum(case when month = 1 then [Total Sales SGP] end) [Jan Sales GP],
    sum(case when month = 2 then [Total Sales S$]  end) [Feb Sales $],
    sum(case when month = 2 then [Total Sales SGP] end) [Feb Sales GP],
    ...
from data
group by cardName
...