我正在尝试创建一个报告,其中每个日期只有一行,然后是客户选择的每种颜色的单独计数器。
输入数据由两列组成,一列用于日期,另一列用于颜色。像这样:
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 |
我想我需要按日期对它进行分组,但问题是我不能“总结”或“计算”只有蓝色等等。这甚至可能吗?如果是这样,有人可以帮助我吗?
答案 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中的关键字