這是一個使用解析函數但沒有連接的解決方案。
假設:
的日期可包含時間元素(時間 - 天)。要求是返回至少有一行FAILED狀態和EndDate與表中所有結束符的最大值相同的應用程序/數據庫的行(但可能是更早的時間)。
對於這些應用程序/數據庫對,返回表中的所有行。 (如果要求是從最大日期只返回行,問題會更容易些。)
查詢:
with
inputs (ApName, DbName, Status, StartDate, EndDate) as (
select 'A1', 'A11', 'Success', to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual union all
select 'A1', 'A11', 'Failed' , to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual union all
select 'A2', 'A22', 'Success', to_date('8/2/2016', 'mm/dd/yyyy'), to_date('8/2/2016', 'mm/dd/yyyy') from dual union all
select 'A3', 'A33', 'Success', to_date('8/2/2016', 'mm/dd/yyyy'), to_date('8/2/2016', 'mm/dd/yyyy') from dual union all
select 'A4', 'A44', 'Failed' , to_date('8/2/2016', 'mm/dd/yyyy'), to_date('8/2/2016', 'mm/dd/yyyy') from dual union all
select 'A4', 'A44', 'Failed' , to_date('8/2/2016', 'mm/dd/yyyy'), to_date('8/2/2016', 'mm/dd/yyyy') from dual union all
select 'A4', 'A44', 'Success', to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual union all
select 'A5', 'A55', 'Failed' , to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual union all
select 'A5', 'A55', 'Failed' , to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual union all
select 'A2', 'A22', 'Success', to_date('8/3/2016', 'mm/dd/yyyy'), to_date('8/3/2016', 'mm/dd/yyyy') from dual
),
prep (apname, dbname, status, startdate, enddate, fdate, mdate) as (
select apname, dbname, status, startdate, enddate,
max(case when status = 'Failed' then enddate end) over
(partition by apname, dbname),
max(enddate) over()
from inputs
)
select apname, dbname, status, startdate, enddate
from prep
where fdate >= trunc(mdate)
;
輸出:
APNAME DBNAME STATUS STARTDATE ENDDATE
------ ------ ------- ---------- ----------
A1 A11 Failed 2016-08-03 2016-08-03
A1 A11 Success 2016-08-03 2016-08-03
A5 A55 Failed 2016-08-03 2016-08-03
A5 A55 Failed 2016-08-03 2016-08-03
4 rows selected.
哪裏是你的SQL查詢?請發佈它,以便我們可以幫助您解決任何無法正常工作的問題。 – sstan
我不明白結果如何解釋。 –
爲什麼'A4'不在結果集中?它有「失敗」和「成功」... – a1ex07