我發現難以構建選擇查詢。需要關於Oracle選擇查詢的幫助
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是越來越填充後續行條目相同的值。
請幫助我一個合適的查詢所需的格式。
非常感謝。
你能解釋一下什麼呢預期輸出列('TOTAL_RECORD AWAITNG_MATCH SINGLE_MATCH MULTI_MATCH')是什麼意思? – luchosrock
它是每個階段記錄的計數。例如,一個id爲1的記錄被插入到表中,那麼它的初始狀態在匹配狀態下將爲0,這只是等待匹配,一旦匹配過程結束,隨後的插入將會發生同樣的記錄,但不同的比賽狀態讓單一比賽說1。等等......總記錄只是id的不同計數,等待匹配是總計數,其記錄當前處於匹配狀態0等等......匹配處理結束和後續插入發生時要記錄的點將被稱爲最新階段 –