ここには分析関数を使用したソリューションがありますが、結合はありません。
仮定:
日付は時間要素(時刻)を含有してもよいです。要件は、テーブル内のすべての終了日の最大値と同じ日にFAILEDステータスと終了日数を持つ少なくとも1つの行を持つアプリケーション/データベースの行を戻すことです(ただし、おそらく早い時刻)。
これらのアプリケーション/データベースのペアの場合は、テーブルからすべての行を返します。 (要件は、最大日から行のみを返すようにした場合、問題が容易になるだろう。)
クエリ:
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