如何统计同一表中跨日期的公司ID出现次数(ID月度变更)
求SQL查询逻辑:跨日期区间统计公司ID出现次数
我需要写SQL来统计同一张表中不同日期区间内的公司ID出现次数。这张表有DATE、CURRENT_ID、OLD_ID、REGISTER这几个字段——公司的CURRENT_ID和OLD_ID每个月都会变更,但REGISTER始终固定不变。
目前我只能实现单次跨月份的关联统计,SQL语句如下:
SELECT A.*, COUNT(B.OLD_ID) FROM ( SELECT DATE_, CURRENT_ID , OLD_ID, REGISTER FROM TABLE_A WHERE DATE = X ) AS A LEFT JOIN (SELECT DATE_, CURRENT_ID, OLD_ID, REGISTER FROM TABLE_A WHERE DATE = X-1 ) AS B ON A.OLD_ID = B.CURRENT_ID AND A.REGISTER = B.REGISTER
我还试过另一个版本:
SELECT A.*, COUNT(B.OLD_ID) FROM ( SELECT DATE, CURRENT_ID , OLD_ID FROM TABLE WHERE DATE = X ) AS A LEFT JOIN (SELECT DATE, CURRENT_ID, OLD_ID FROM TABLE WHERE DATE = X-1 ) AS B ON A.OLD_ID = B.CURRENT_ID AND A.REGISTER = B.REGISTER
但我需要统计所有日期区间的出现次数,不知道该怎么修改实现。
数据示例
| DATE | CURRENT_ID | OLD_ID | REGISTER |
|---|---|---|---|
| 202201 | 123012 | 123321 | 'xpt0' |
| 202202 | 123987 | 123012 | 'xpt0' |
| 202203 | 987321 | 123987 | 'xpt0' |
| 202203 | 789322 | null | 'xpt0' |
| 202203 | 976533 | 987321 | 'wyzx' |
内容的提问来源于stack exchange,提问作者Dullandal
相关产品推荐
相关产品推荐

