在单个SQL查询中分组和聚合字段

时间:2014-09-19 17:48:15

标签: sql sql-server database tsql relational-database

我的表格如下:

表名:TRANSACTIONS

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可以工作。

谢谢!

1 个答案:

答案 0 :(得分: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