我有一个查询,给我这张表:
| contract | sent_date |
| -------- | --------- |
| a |2020-01-02 |
| a |2020-01-02 |
| b |2020-01-02 |
| a |2020-01-03 |
| c |2020-01-03 |
| b |2020-01-04 |
| a |2020-01-05 |
| a |2020-01-05 |
我想汇总每个发送日期的每个合同的计数。因此,返回表如下所示:
| contract | 2020-01-02 | 2020-01-03 | 2020-01-04 | 2020-01-05 |
| -------- | ---------- | ---------- | ---------- | ---------- |
| a | 2 | 1 | 0 | 2 |
| b | 1 | 0 | 1 | 0 |
| c | 0 | 1 | 0 | 0 |
任何人都可以给我一些指导以形成这样的查询吗?谢谢。
如果知道所需的日期列表,请使用条件聚合:
select contract,
sum(case when sent_date = '2020-01-02' then 1 else 0 end),
sum(case when sent_date = '2020-01-03' then 1 else 0 end),
sum(case when sent_date = '2020-01-04' then 1 else 0 end),
sum(case when sent_date = '2020-01-05' then 1 else 0 end)
from t
group by contract;
如果列表基于数据,则需要动态SQL。确切的语法取决于您使用的数据库。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句