Sql 如何获取六个月内每个月的最小日期?
我有这样的数据Sql 如何获取六个月内每个月的最小日期?,sql,oracle,plsql,Sql,Oracle,Plsql,我有这样的数据 Process_date SEQ_No ------------- --------- 16-MAR-13 733 09-MAR-13 732 02-MAR-13 731 24-FEB-13 730 16-FEB-13 728 09-FEB-13 727 02-FEB-13 726 26-JAN-13 725 21-JAN-13 724 12-JAN-13 723 05-JAN-13 722 29-DEC-12 721 24-
Process_date SEQ_No
------------- ---------
16-MAR-13 733
09-MAR-13 732
02-MAR-13 731
24-FEB-13 730
16-FEB-13 728
09-FEB-13 727
02-FEB-13 726
26-JAN-13 725
21-JAN-13 724
12-JAN-13 723
05-JAN-13 722
29-DEC-12 721
24-DEC-12 720
15-DEC-12 719
08-DEC-12 718
03-DEC-12 717
22-NOV-12 716
17-NOV-12 715
10-NOV-12 714
03-NOV-12 713
29-OCT-12 712
23-OCT-12 711
13-OCT-12 710
05-OCT-12 709
28-SEP-12 708
22-SEP-12 707
15-SEP-12 706
08-SEP-12 705
01-SEP-12 704
每个月管理员都会刷新实际数据表,并且上面的表会自动更新为唯一的序号和处理日期
我需要提取最近6个月每个月第一次刷新的最小日期-不包括当前月份以及与该月份相关的序号,因此使用主表中可用的序号连接,我可以合并实际数据
我需要这样的结果:
02-MAR-13 731 ( I don't need MAR as it should not take current month data)
所以我需要的最终结果如下:
02-FEB-13 726
05-JAN-13 722
08-DEC-12 718
03-NOV-12 713
05-OCT-12 709
01-SEP-12 704
-很抱歉问这样的直接问题。我不知道该怎么做。这就是我没有准备/发布任何查询的原因。我不明白seq\u no在另一个表中的位置。。。 但使用输入数据:
select
min(process_date),
min(seq_no) keep (dense_rank first order by process_date)
from
your_table
where
process_date between add_months(trunc(sysdate,'MM'),-7)
and last_day(add_months(sysdate, -1))
group by
trunc(process_date,'MM');
我会的
小提琴示例:试试:
SELECT seq_no,process_date FROM my_table
WHERE process_date IN (SELECT min(process_date)
FROM my_table
GROUP BY TRUNC(process_date,'MM'))
你应该闪现一下你的答案。
SELECT seq_no,process_date FROM my_table
WHERE process_date IN (SELECT min(process_date)
FROM my_table
GROUP BY TRUNC(process_date,'MM'))