2014-10-09 30 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