按日期分组并计算特定值

时间:2014-04-11 06:30:48

标签: sql oracle count group-by sum

我正在尝试创建一个报告,其中每个日期只有一行,然后是客户选择的每种颜色的单独计数器。

输入数据由两列组成,一列用于日期,另一列用于颜色。像这样:

2014-04-11  BLUE

2014-04-11  GREEN

2014-04-11  BLUE

2014-04-10  RED

2014-04-10  GREEN

2014-04-09  RED

2014-04-09  RED

这就是我希望报告的样子:

| DATE | BLUE | GREEN | RED |

| 2014-04-11 | 2 | 1 | 0 |

| 2014-04-10 | 0 | 1 | 1 |

| 2014-04-09 | 0 | 0 | 2 |

我想我需要按日期对它进行分组,但问题是我不能“总结”或“计算”只有蓝色等等。这甚至可能吗?如果是这样,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

请尝试:

select 
    "date",
    SUM(case when color='BLUE' then 1 else 0 end) as BLUE,
    SUM(case when color='GREEN' then 1 else 0 end) as GREEN,
    SUM(case when color='RED' then 1 else 0 end) as RED
from
    YourTable
Group by "date"

答案 1 :(得分:0)

SELECT "DATE",
        SUM(CASE WHEN color='GREEN' THEN 1 ELSE 0 END) as GREEN
        SUM(CASE WHEN color='RED' THEN 1 ELSE 0 END) as RED
        SUM(CASE WHEN color='BLUE' THEN 1 ELSE 0 END) as BLUE
FROM tableName
GROUP BY "DATE"

您需要使用双引号来转义名为DATE的列,因为它是Oracle中的关键字