2013-05-31 92 views
1

嗨每一個我有一個數據庫,類似以下內容:琛每天總在MSSQL類別

TransactionID  DateTime  Amount  Country 
----------------------------------------------------- 
T123456   2013-05-01   100   US 
T123457   2013-05-01   150   US 
T123458   2013-05-01   200   CN 
T123459   2013-05-01   250   CN 
T123460   2013-05-02   250   TW 
T123461   2013-05-02   350   ID 
T123462   2013-05-02   200   TW 
T123463   2013-05-02   50   ID 
T123464   2013-05-02   250   TW 
T123465   2013-05-03   450   TW 
T123466   2013-05-03   350   ID 
T123467   2013-05-03   200   TW 
T123468   2013-05-03   150   CN 
T123469   2013-05-03   350   US 

是否有可能使用MSSQL產生以下結果?

DateTime  Amount  Country 
----------------------------------- 
2013-05-01   700  Total 
2013-05-01   450   CN 
2013-05-01   250   US 
2013-05-02  1100  Total 
2013-05-02   700   TW 
2013-05-02   400   ID 
2013-05-03  1500  Total 
2013-05-03   650   TW 
2013-05-03   350   ID 
2013-05-03   350   US 
2013-05-03   150   CN 

謝謝。

回答

3

隨着一點點的UNION

SELECT u.DateTime, u.Amount, u.Country 
FROM (
SELECT DateTime, SUM(Amount) as Amount, Country 
FROM Table1 
GROUP BY DateTime, Country 
UNION 
SELECT DateTime, SUM(Amount) as Amount, 'Total' as Country 
FROM Table1 
GROUP BY DateTime) u 
ORDER BY u.Datetime, 
CASE WHEN u.Country = 'Total' THEN 0 else 1 END, 
u.Country 

SqlFiddle

+0

+1,但你需要通過 – bummi

+0

添加順序總數必須在每天的頂部。 – DragonZelda

+0

@DragonZelda在這裏你是 –

2

您通常rollup或類似的條款做到這一點:

select DateTime, sum(amount) as Amount, coalesce(country, 'Total') 
from t 
group by rollup(country), DateTime