2014-10-09 2 views
1

У меня есть следующий набор данных:Столбцов в общей сложности в строке и транспонировать (SQL-сервер)

Account|Can|Fra|scl| 
1012 0 10 1 
1011 5 10 0 

Как я могу получить общее количество по каждому столбцу в строке первым:

Account|Can|Fra|scl| 
1012 0 10 1 
1011 5 10 0 
Total 5 20 1 

, а затем переставьте его так, чтобы оно выглядело так:

Can 5 
Fra 20 
Scl 1 

ответ

1

Этот запрос должен вам помочь. Это позволит избежать ненужного промежуточного шага. Вы можете непосредственно получить окончательный результат с ниже запроса

SELECT 'CAN' AS COUNTRY, SUM(CAN) AS COUNTVAL FROM MY_TABLE 
UNION ALL 
SELECT 'FRA' AS COUNTRY, SUM(FRA) AS COUNTVAL FROM MY_TABLE 
UNION ALL 
SELECT 'SCL' AS COUNTRY, SUM(SCL) AS COUNTVAL FROM MY_TABLE 

Working fiddle - 1 here

Если вы хотите, чтобы получить общее количество каждого столбца, то вы можете использовать:

SELECT ACCOUNT, CAN, FRA,SCL FROM MY_TABLE 
UNION ALL 
SELECT 'TOTAL' AS ACCOUNT, SUM(CAN) AS CAN, SUM(FRA) AS FRA, SUM(SCL) AS SCL 
     FROM MY_TABLE 

Working fiddle - 2 here