表格式是这样的:
数据ID
数据名称
数据创建时间
数据状态是否有效
#表每天更新,格式是这样的
ds=20220323
ds=20220322
ds=20220321
ds=20220320
按照日期0320~0323每天统计数据ID 的总量怎么写?
我的代码只有20220323的数据
SELECT ds AS 时间
,count(item_id) AS 总量
FROM A
WHERE ds = TO_CHAR(DATEADD(GETDATE(), - 1,'dd'),'yyyymmdd')
AND REGEXP_REPLACE(SUBSTR(ds,1,10) ,'-','') BETWEEN TO_CHAR(DATEADD(GETDATE(), - 31, 'dd'), 'yyyymmdd')
AND TO_CHAR(DATEADD(GETDATE(), - 1, 'dd'), 'yyyymmdd')
GROUP BY ds
ORDER BY ds DESC
运行结果及报错内容
时间 总量
20220323 12345566
我想要达到的结果
时间 总量
20220323 12345566
20220322 X1
20220321 Y1
你的sql只有20220323的数据是因为有这个条件
ds = TO_CHAR(DATEADD(GETDATE(), - 1,'dd'),'yyyymmdd')
今天是 20220324,减1天自然就是20220323了。
你想要的查询条件到底是静态的 "0320~0323" ?还是会跟着日期一起变的动态时间范围?如果是动态的,那么这个动态范围的规则是什么?
SELECT ds AS 时间
,count(item_id) AS 总量
FROM A
WHERE ds between '20220320' and '20220323'
GROUP BY ds
SELECT ds AS 时间
,count(item_id) AS 总量
FROM A
WHERE ds between TO_CHAR(DATEADD(GETDATE(), - 4,'dd'),'yyyymmdd') and
TO_CHAR(DATEADD(GETDATE(), - 1,'dd'),'yyyymmdd')
GROUP BY ds