我有这张桌子

records
- id
- date
- typology

我想每天提取类型为999的记录计数。我知道每天至少有一个记录,但大多数时候我没有999型的记录。
我试过类似的
select count(*) from records where typology = 999 and date > '2017-01-01' group by date order by date asc;

希望得到像
285 | 2017-01-06 |
307 | 2017-01-07 |
  0 | 2017-01-08 |
316 | 2017-01-09 |

但我不知道。我知道
285 | 2017-01-06 |
307 | 2017-01-07 |
316 | 2017-01-09 |

没错。因为1月8日没有999型的记录,所以我不知道那一行。但我愿意。我不必“发明”2017-01-08日期,肯定有记录与该日期(但不同类型)。
我尝试了一些coalesce和子查询,但没能从中得到什么,主要是因为我有两个字段,coalesce在我看来只对一个字段工作得很好。
我也试过一个案子
SELECT CASE c WHEN NULL THEN 0 ELSE c END
FROM (
select count(*) as c from records where typology = 892 and date > '2017-01-01' group by date order by date asc
) as s;

也没用。我敢肯定这是一个相当混乱的查询。
你对我有什么建议吗?
谢谢你
马可

最佳答案

试试这个:

select t.date,
  count(r.date)
from records r
right join
  ( select date from records where date > '2017-01-01' group by date
  ) t
on r.date      = t.date
and r.typology = 999
group by t.date
order by t.date asc;

关于sql - 没有数据时也提取按日期的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41681326/

10-10 11:53
查看更多