2014-11-26 7 views
0

У меня есть таблица со следующими данными:Сумма столбца значений в сводной таблице

Таблица: FTEST

create table ftest 
(
    cola varchar(10), 
    colb varchar(10) 
) 

Вставка записей:

insert into ftest values('A10','JK1'); 
insert into ftest values('A10','JK2'); 
insert into ftest values('A10','JK3'); 
insert into ftest values('A10','JK4'); 
insert into ftest values('A10','JK1'); 

Pivot Таблица Сценарий:

select cola,JK1,JK2,JK3,JK4 
from 
(
    select cola,colb 
    from ftest 
)p 
pivot 
(
    count(colb) 
    for colb in (JK1,JK2,JK3,JK4) 
) as pvt; 

Получение Результат:

cola JK1 JK2 JK3 JK4 
------------------------ 
A10 2 1 1 1 

Ожидаемый результат:

Я хочу суммировать значения всех столбцов JK1,JK2,JK3,JK4 и присвоить ему в SUM колонку.

cola JK1 JK2 JK3 JK4 SUM 
----------------------------- 
A10 2 1 1 1 5 

ответ

3

Существует несколько разных способов, которыми вы можете получить столбец Total.

Вы можете добавить каждый из столбцов вместе в окончательном списке выбора:

select cola,JK1,JK2,JK3,JK4, 
    Total = JK1+JK2+JK3+JK4 
from 
(
    select cola,colb 
    from ftest 
)p 
pivot 
(
    count(colb) 
    for colb in (JK1,JK2,JK3,JK4) 
) as pvt; 

См Demo

Или вы можете использовать оконную функцию как COUNT() OVER(), чтобы получить общее количество для каждого cola раздела:

select cola,JK1,JK2,JK3,JK4, Total 
from 
(
    select cola,colb, 
    Total = count(*) over(partition by cola) 
    from ftest 
)p 
pivot 
(
    count(colb) 
    for colb in (JK1,JK2,JK3,JK4) 
) as pvt; 

См. Demo. Оба дают результат:

| COLA | JK1 | JK2 | JK3 | JK4 | TOTAL | 
|------|-----|-----|-----|-----|-------| 
| A10 | 2 | 1 | 1 | 1 |  5 | 
+0

Отлично! Огромное спасибо. – MAK

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