希望這個問題的答案很簡單(它似乎應該是,但我失去了一些東西)....我有一個簡單的查詢,從最小值一個表(通過子查詢),然後使用該最小值試圖得到一個簡單的months_between最終結果從子查詢使用min()結果返回多條記錄
我試圖儘可能簡單回答的問題是:什麼是最早的end_date和多遠從REPORT_DATE後面是這個END_DATE
這裏的查詢
select end_date term_date, months_between (cast (report_date as date), cast (end_date as date)) term_length
from table1
where end_date =
(select min (end_date) end_date
from table1
where rec_load_date = (select max (rec_load_date) from table1)
and active_rec = 'Y' and end_date <= report_date);
我的問題是,雖然子查詢完美地工作,即我得到一個單一的min(end_date)值,在主查詢中使用它返回多個記錄。 (參見圖像)
當前結果: 1. term_date =分鐘(table1.end_date) 2. term_length = MONTHS_BETWEEN值進行比較table1.report_date和table1.end_date(即,用於在表1中記錄的實際END_DATE值)
當前結果(附加圖像):
記錄樣品返回(儘可能多的行,因爲有在表1適用END_DATE值)
樣本數據:
create table table1 (rec_load_date varchar(25), report_date as varchar (25), end_date as varchar (25));
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-02-28');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-01-31');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-04-30');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-03-31');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-01-31');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-04-25');
insert into table1 (rec_load_date, report_date, end_date) values ('2017-08-10', '2017-07-31', '2017-01-31');
我如何可以從查詢得到以下結果的任何想法:「2017年1月31日」,6
好了,你有這裏面有一個20170131結束日期的記錄,因此被返回的行。這裏真正的目標是什麼?你想用這個查詢來回答什麼問題。 – scsimon
您好scsimon,我試圖得到的具體答案是:什麼是最早的end_date,並且距離report_date有多遠這是end_date – Gar