2015-02-25 5 views
0

Я работаю с SQL Server 2008. У меня есть временная таблица, которая возвращает этот результатRow, как столбец в SQL Server 2008

Location  Month  value 
US   January   10 
US   February  10 
US   March   10 
US   April   10 
US   May    10 
US   June   10 
UK   January   10 
UK   January   10 
UK   February  10 
UK   February  10 
UK   March   10 
UK   March   10 
UK   April   10 
UK   April   10 
UK   May    10 
UK   May    10 
UK   June   10 
UK   June   10 

Я хочу, чтобы получить результат, как показано ниже

Location January February March Q1 April May June Q2 
US    10  10  10 30  10 10 10 30 
UK    20  20  20 60  20 20 20 60 

Как запросить получение вышеуказанного результата с помощью SQL Server 2008?

+1

Просьба представить ваш текущий запрос и, если возможно, организовать результирующие данные более удобным способом для чтения (с h eaders, separators) –

ответ

0

Вы можете использовать этот запрос, вы должны заполнить его, чтобы соответствовать вашим потребностям всех недостающих месяцев/квартала:

select Location 
     ,sum(case when [Month] = 'January' then value else 0 end) as January 
     ,sum(case when [Month] = 'February' then value else 0 end) as February 
     ,sum(case when [Month] = 'March' then value else 0 end) as March 
     ,sum(case when [Month] in ('January', 'February', 'March') 
              then value else 0 end) as Q1 
     ... 
     -- Repeat months... 
     ... 
     ,sum(value) as AllMonthTotal 
from myTempTable 
group by Location 

-- UNION to get rowwise total 
union 
select 'TOTAL' 
     ,sum(case when [Month] = 'January' then value else 0 end) as January 
     ,sum(case when [Month] = 'February' then value else 0 end) as February 
     ,sum(case when [Month] = 'March' then value else 0 end) as March 
     ,sum(case when [Month] in ('January', 'February', 'March') 
              then value else 0 end) as Q1 
     ... 
     -- Repeat months... 
     ... 
     ,sum(value) as AllMonthTotal 
from myTempTable 

Там также PIVOT метод:

Using PIVOT in SQL Server 2008

MSSQL dynamic pivot column values to column header

+0

Спасибо большое, что он помогает. Как получить общее количество столбцов по этому запросу – user2514925

+0

Добавить еще один SUM (значение) без какого-либо теста дает вам общее (обновленный ответ). – Rubik

+0

жаль, что я упомянул неправильно как columnwise, я хочу получить общее количество – user2514925

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