sql改写

让程序飞 2017-12-20 02:05:11
select nvl(sum(synnum),0)  value ,to_char(syntime, 'yyyy-MM-dd') lable from synlog where syntype in (4, 5, 6) and trunc(syntime) > trunc(sysdate) -  30 group by  to_char(syntime, 'yyyy-MM-dd') ; 

目前此数据 只能得到一条
希望日期可以从当天扩展为30条 日期自动补全
目前查询的数据为
value lable
465 2017-12-19

我希望是
value lable
0 2017-12-20
465 2017-12-19
0 2017-12-18
........
0 2017-11-20
共30条
...全文
273 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

with t1 as(
select level as id, to_date('2017-12-19','yyyy-mm-dd')+2 - level as date1 from dual
connect by level<6)
,t2(value,lable) as(
SELECT 1  AS "value", trunc(sysdate)as lable from dual
union all 
SELECT 9  AS "value", trunc(sysdate-4)as lable from dual)
select t1.date1, NVL(t2.value,0) AS value1  from t1 left join t2 on t1.date1=t2.lable ORDER BY DATE1
/*
   	DATE1	VALUE1
1	2017/12/16	9
2	2017/12/17	0
3	2017/12/18	0
4	2017/12/19	0
5	2017/12/20	1
*/
把 T2里面的改成你的查询就可以
小当家e 2017-12-20
  • 打赏
  • 举报
回复
生成一张日期的中间表(可以写成临时表),做主表,然后 左连接 你的表 以日期中间表的日期 左关联 你的表 日期 , select date,sum from 表a,表b where a.date=b.date group by 中间表的日期
Stuild Stuil 2017-12-20
  • 打赏
  • 举报
回复
表数据和字段贴出来

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧