补齐小时数据

my188513688 2018-10-17 12:32:28
如图,用0补齐每天24小时的value1,valu2数据,我只写了4个小时的,不是只有a、b、c3个组,有可能有上千组,大体是这个意思,无关因要列可以为空,用查询语句查出图二的结果,不是新增数据



create table TEST
(
ID VARCHAR2(15),
HOUR NUMBER,
VALUE1 NUMBER,
TIME DATE,
VALUE2 NUMBER,
NAME NVARCHAR2(15)
)


insert into TEST (ID, HOUR, VALUE1, TIME, VALUE2, NAME)
values ('a', 1, 1, to_date('17-10-2018 01:00:00', 'dd-mm-yyyy hh24:mi:ss'), 1, 'aa');
insert into TEST (ID, HOUR, VALUE1, TIME, VALUE2, NAME)
values ('a', 2, 1, to_date('17-10-2018 02:00:00', 'dd-mm-yyyy hh24:mi:ss'), 1, 'aa');
insert into TEST (ID, HOUR, VALUE1, TIME, VALUE2, NAME)
values ('a', 4, 1, to_date('17-10-2018 04:00:00', 'dd-mm-yyyy hh24:mi:ss'), 1, 'aa');
insert into TEST (ID, HOUR, VALUE1, TIME, VALUE2, NAME)
values ('b', 1, 1, to_date('17-10-2018 01:00:00', 'dd-mm-yyyy hh24:mi:ss'), 1, 'bb');
insert into TEST (ID, HOUR, VALUE1, TIME, VALUE2, NAME)
values ('c', 2, 1, to_date('17-10-2018 02:00:00', 'dd-mm-yyyy hh24:mi:ss'), 1, 'cc');
commit;
...全文
405 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧水幽幽泉 2018-10-19
  • 打赏
  • 举报
回复
稠化报表不好理解,使用常规SQL即可实现:

select distinct a.id,a.hour,nvl(b.value1,0) as value1,a.time,nvl(b.value2,0) as value2,a.name
from(select id,rn as hour,trunc(time)+rn/24 as time,name
from test,(select rownum as rn from dual connect by rownum <= 24)
)a left join test b on a.id = b.id and a.time = b.time
order by a.id,a.hour
nayi_224 2018-10-17
  • 打赏
  • 举报
回复
select t1.id,
       nvl(t1.hour, t2.hour) hour,
       nvl(t1.value1, 0) value1,
       nvl(t1.time, t2.time) time,
       nvl(t1.value2, 0) value2,
       max(t1.name) over(partition by t1.id) name
  from test t1 partition by(t1.id)
 right join (select level hour,
                    to_date('20181017', 'yyyymmdd') + level / 24 time
               from dual
             connect by level <= 4) t2 on t1.hour = t2.hour;
Wazy_csdn 2018-10-17
  • 打赏
  • 举报
回复
引用樓上 稠化报表

with t1 as (select distinct hour from test)
select a,id,t1.hour,nvl(a.value1,0),a.time,nvl(a.value2,0),a.name from test a
PARTITION BY (a.id)
right join t1
on t1.hour=a.hour
卖水果的net 2018-10-17
  • 打赏
  • 举报
回复
楼主百度一下 “ORACLE 稠化报表“ 。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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