问题描述
嗨,汤姆,
我有以下要求
表:
现在期望的输出是
我尝试了下面的查询
但是我的输出看起来像
请帮我查询一下
谢谢
阿伦
我有以下要求
表:
create table test1
(start_date date,
amount number)
insert into test1 values('18-jan-17', 27000);
insert into test1 values('19-jan-17', 27000);
insert into test1 values('20-jan-17', 30000);
insert into test1 values('21-jan-17', 30000);
insert into test1 values('22-jan-17', 30000);
insert into test1 values('23-jan-17', 29000);
insert into test1 values('24-jan-17', 29000);
insert into test1 values('25-jan-17', 30000);
insert into test1 values('26-jan-17', 30000);
commit;
START_DATE AMOUNT
18-JAN-17 00:00:00 27000
19-JAN-17 00:00:00 27000
20-JAN-17 00:00:00 30000
21-JAN-17 00:00:00 30000
22-JAN-17 00:00:00 30000
23-JAN-17 00:00:00 29000
24-JAN-17 00:00:00 29000
25-JAN-17 00:00:00 30000
26-JAN-17 00:00:00 30000现在期望的输出是
START_DATE END_DATE 18-JAN-17 19-JAN-17 20-JAN-17 22-JAN-17 23-JAN-17 24-JAN-17 25-JAN-17 26-JAN-17
我尝试了下面的查询
WITH tab AS
(SELECT rownum rn, a.* FROM test1 a ORDER BY start_date
)
SELECT *
FROM
(SELECT x.start_date ,
CASE
WHEN x.amount = y.amount
THEN y.start_date
END AS end_date
FROM tab x,
tab y
WHERE x.rn+1 = y.rn(+)
)
WHERE end_date IS NOT NULL.但是我的输出看起来像
START_DATE END_DATE 18-JAN-17 00:00:00 19-JAN-17 00:00:00 20-JAN-17 00:00:00 21-JAN-17 00:00:00 --> THIS ROW IS NOT DESIRED (instead it should be 20-jan-17 22-jan-17) 21-JAN-17 00:00:00 22-JAN-17 00:00:00 23-JAN-17 00:00:00 24-JAN-17 00:00:00 25-JAN-17 00:00:00 26-JAN-17 00:00:00
请帮我查询一下
谢谢
阿伦
专家解答
你的逻辑到底是什么?查找具有相同金额的连续天数的开始日期和结束日期?
如果是这样,Tabibitosan方法是你的朋友:
如果是这样,Tabibitosan方法是你的朋友:
WITH tab AS
(SELECT a.*,
row_number() over (order by start_date) -
row_number() over (partition by amount order by start_date) grp
FROM test1 a
)
select min(start_date), max(start_date), amount from tab
group by grp, amount
order by 1;
MIN(START_DATE) MAX(START_DATE) AMOUNT
18-JAN-0017 00:00:00 19-JAN-0017 00:00:00 27000
20-JAN-0017 00:00:00 22-JAN-0017 00:00:00 30000
23-JAN-0017 00:00:00 24-JAN-0017 00:00:00 29000
25-JAN-0017 00:00:00 26-JAN-0017 00:00:00 30000 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




