1

我有一个可以用一个简单的虚拟表格来解释的问题。

表“饮料”只有三个字段:

  • Id (1..N) - 主键
  • 日期 ('2012-09-19'...) - 每个日期都可能经常出现
  • 热(1 表示是,0 表示错误)。

我想制作一个这样的列表:

    Date         Total    Hot    Cold
    2012-09-19   14       6      8
    2012-09-10   21       18     3

等等。

如您所料,“冷”字段计算为(总 - 热)。

到目前为止,我得到的是:

    SELECT Date, count(*) AS Total FROM Drinks GROUP BY Date;

这给了我想要的表,但当然没有“热”和“冷”列。

有没有办法修改我的查询,以便我可以一次生成这张表?我当然可以使用 PHP 代码分阶段构建表格,但这可能不是优雅的方式,也不是最快的方式。

我很高兴观看和学习... :)

4

2 回答 2

2

您可以在子句中添加CASE语句SELECT

SELECT Date, 
       count(*) AS Total,
        SUM(CASE WHEN Hot = 1 THEN 1 ELSE 0 END) totlHOT,
        SUM(CASE WHEN Hot = 0 THEN 1 ELSE 0 END) totalCold
FROM Drinks 
GROUP BY Date;
于 2012-09-19T15:21:22.340 回答
0
SELECT Date,
    count(*) AS Total,
    SUM(Hot = 1) Hot,
    SUM(Hot = 0) Cold
FROM Drinks
GROUP BY Date;
于 2012-09-19T15:23:35.483 回答