SQL Server: поворот по нескольким столбцам - PullRequest
1 голос
/ 20 января 2012

У меня серьезная проблема. Скажем, мои данные расположены в следующем формате:

Name      Businees_unit  Forecast  Upside
Jack.N    India          100       50
Jack.N    China          250       20

Мне нужно повернуть Forecast и Upside для Business_Unit, чтобы таблица выглядела следующим образом

Name    Forecast_India    Upside_India      Forecast_China    Upside_China
Jack    100               50                250               20

Можно ли это сделать одним запросом?

Это моя первая запись, поэтому любая помощь очень приветствуется.

Спасибо

Ответы [ 2 ]

1 голос
/ 20 января 2012

Общее решение:

select name,
       sum(case when Businees_unit = 'India' then Forecast else 0 end) Forecast_India,
       sum(case when Businees_unit = 'India' then Upside else 0 end) Upside_India,
       sum(case when Businees_unit = 'China' then Forecast else 0 end) Forecast_China,
       sum(case when Businees_unit = 'China' then Upside else 0 end) Upside_China
from My_table
group by name
0 голосов
/ 20 января 2012

Я бы использовал self join:

SELECT DISTINCT SomeTable.Name, China.Forecast as Forecast_China, China.Upside as Upside_China
, India.Forecast as Forecast_India, India.Upside as Upside_India
FROM SomeTable
inner join SomeTable India on India.Name = SomeTable.Name AND India.Business_unit = 'India'
inner join SomeTable China on China.Name = SomeTable.Name AND China.Business_unit = 'China'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...