選択クエリを構成するのが難しいと感じています。
PFB、テーブルと対応するデータ:
ID DLS MATCH_STATUS LAST_UPDATE_TIME BO CH FT
1 0 0 09-07-2013 00:00:00 IT TE NA
1 1 1 09-07-2013 00:01:01 IT TE NA
2 0 0 09-07-2013 10:00:00 IP TE NA
3 0 0 09-07-2013 11:00:00 IT YT NA
3 2 2 09-07-2013 11:01:00 IT YT NA
ここ
Match_Status 0-->Initial Record
1-->Singel Match
2-->Multi Match
すべてのレコードについて、match_status 0 の最初のエントリがあり、その後の照合プロセスの終わりには、1,2 などの他の番号が更新されます。
BO、CH、FT別の通算戦績、待機戦、シングル戦、マルチ戦組などの記録を取得したい
以下は、予想されるアウトプットです。
BO CH FT TOTAL_RECORD AWAITNG_MATCH SINGLE_MATCH MULTI_MATCH
IT TE NA 1 0 1 0
IP TE NA 1 1 0 0
IT YT NA 1 0 0 2
以下のクエリを試しました:
select BO,CH,FT,sum(case when match_status=0 then 1 else 0 end) as TOTAL_RECORD,
sum(case when match_status = 0 then 1 else 0 end) as AWAITING_MATCH,
sum(case when match_status = 1 then 1 else 0 end) as SINGLE_MATCH,
sum(case when match_status = 2 then 1 else 0 end) as MULTI_MATCH from
table1 where last_update_time >= current_timestamp-1
group by BO,CH,FT;
上記のクエリの問題は、awaiting_match が、match_status=0 のため、私が理解しているように合計レコードと同じように入力されていることです。
select BO,CH,FT,sum(case when match_status=0 then 1 else 0 end) as TOTAL_RECORD,
select (sum(case when t1.ms=0 then 1 else 0 end) from
(select max(match_status) as ms from table1 where last_update_time >= current_timestamp-1 group by id)t1) )awaiting_match,
sum(case when match_status = 1 then 1 else 0 end) as SINGLE_MATCH,
sum(case when match_status = 2 then 1 else 0 end) as MULTI_MATCH from
table1 where last_update_time >= current_timestamp-1
group by BO,CH,FT;
アプローチの問題は、awaiting_match が後続の行エントリに同じ値で入力されることです。
希望するフォーマットに適したクエリを教えてください。
よろしくお願いします。