2010-11-16 75 views
1

我有这个形式的查询:SQL多个组 - 可能吗?

SELECT e.date, SUM(e.size) as bytes 
FROM entries AS e 
GROUP BY e.date 
ORDER BY bytes DESC 

,我有一个名为客户端柱,它是由静态值(0,1,2,3),所以我希望得到这样的:

SELECT e.date, SUM(e.size) as bytes 
FROM entries AS e 
WHERE e.client = 0 
GROUP BY e.date 
ORDER BY bytes DESC 

重复为每个客户端类型,但在一个单一的查询来获取每一个客户端类型汇总尺寸的结果:

DATE | CLI0-SIZE | CLI1-SIZE | CLI2-SIZE | CLI3-SIZE 
2010-11-11  113   344   435   155 
+0

您正在使用哪个数据库? – 2010-11-16 23:28:25

回答

7

你可以试试这个

SELECT e.date, 
    SUM(CASE WHEN e.client = 0 THEN e.size ELSE 0 END) as CLI0-SIZE, 
    SUM(CASE WHEN e.client = 1 THEN e.size ELSE 0 END) as CLI1-SIZE, 
    SUM(CASE WHEN e.client = 2 THEN e.size ELSE 0 END) as CLI2-SIZE, 
    SUM(CASE WHEN e.client = 3 THEN e.size ELSE 0 END) as CLI3-SIZE 
FROM entries AS e 
GROUP BY e.date 
+0

..........好的! – einundswanzig 2010-11-17 16:02:51

1

关系数据库管理系统:Microsoft SQL Server的

这将返回以下布局:

date | client | bytes 
2010-11-11 | 2 | 435 
2010-11-11 | 1 | 344 
2010-11-11 | 3 | 155 
2010-11-11 | 0 | 113 

这将组的所有客户端类型,而不仅仅是0,1,2,3 - 我想你想要这个。

SELECT 
    e.date, 
    e.client, 
    SUM(e.size) AS bytes 
FROM 
    entries AS e 
GROUP BY 
    e.date, 
    e.client 
ORDER BY 
    bytes DESC 

然后,您可以在桌子上执行数据透视。

+0

不是我一直在寻找,但至少它在一个查询中获取我的信息。 – einundswanzig 2010-11-17 15:57:20