2014-09-19 75 views
2

我已經制定了一個表如下:分組和在單個SQL查詢聚合領域

表名:交易

transactionId | accountId | technology 
-------------------------------------- 
1    | 1   | mac 
2    | 1   | linux 
3    | 2   | pc 
4    | 3   | linux 
5    | 2   | pc 
6    | 3   | linux 
... 

我想生成以下格式的報表

accountId | num. pc | num. mac | num. linux 
------------------------------------------- 
1   | 1  | 1  | 0   
2   | 1  | 0  | 1 
3   | 0  | 0  | 2 
... 

我不是SQL專家,但我覺得我應該可以使用GROUP BY子句來生成這些結果。是否有可能在單個查詢中生成這個結果集?我現在正在使用MS SQL Server 2008,所以T-SQL的工作原理。

謝謝!

+0

等待。你是否想要重新生成一個看起來像這樣的新表? 或生成的查詢以這種格式出現? – Jay 2014-09-19 17:51:52

+0

對不起,我應該更加明確。我正在查詢生成該結果集的查詢。 – ccampo 2014-09-19 17:52:34

+0

技術領域是否總是受限於這三個值? – AHiggins 2014-09-19 17:55:53

回答

2

你可以嘗試這樣的事情

SELECT 
    accountId , 
    [num. pc] = SUM(CASE WHEN technology = 'pc' THEN 1 ELSE 0 END), 
    [num. mac] = SUM(CASE WHEN technology = 'mac' THEN 1 ELSE 0 END), 
    [num. linux] = SUM(CASE WHEN technology = 'linux' THEN 1 ELSE 0 END) 
FROM YourTable 
GROUP BY accountId 
+0

如果您使用此代碼,我建議添加一個「其他」存儲區以捕獲任何未列入此列表的技術。 – AHiggins 2014-09-19 17:59:13

+0

這就是我一直在尋找的!謝謝!! – ccampo 2014-09-19 18:01:07