2017-08-15 86 views
0

我怎麼能檢索的結果,如果給定的多行數據多行單列

Show multiple row data

上進行列結果的基礎。條件以tserv_id'DISCHARGE'開始並以'ONPOWER'結束。

的條件:

  1. 放電ONPOWER(1行)
  2. 任何最後1)ONPOWER -------------- ONPOWER(1行之間進行的)
  3. 任何之間執行的最後2)ONPOWER -------------- ONPOWER(1 row)
  4. 任何執行之間的最後3)ONPOWER ------------ --- ONPOWEWR(1 row)

Output

代碼:

select 
    min(Case tserv_id when 'Discharge' then PERFORMED end) as tserv_discharge, 
    min(Case tserv_id when 'ONPOWER' then PERFORMED end) as tserv_onpower --How to retrieve data performed between disharge & first onpower? 
from 
    ODS_REEFER 
where 
    EQ_NBR = 'A1234'; 

select 
    min(Case tserv_id when 'ONPOWER' then PERFORMED end) as tserv_onpower, 
    max(Case tserv_id when 'ONPOWER' then PERFORMED end) as tserv_onpower --How to exclude performed first ONPOWER and how to read performed between second ONPOWER? 
from 
    ODS_REEFER 
where 
    EQ_NBR = 'A1234'; 

回答

2

使用聚合:

select min(Case tserv_id when 'Discharge' then PERFORMED end) as tserv_discharge, 
     min(Case tserv_id when 'ONPOWER' then PERFORMED end) as tserv_onpower, 
     min(Case tserv_id when 'YARD2TRUCK' then PERFORMED end) as tserv_yard2truck, 
     min(Case tserv_id when 'FULL OUT' then PERFORMED end) as tserv_fullout, 
     min(Case tserv_id when 'FULL IN' then PERFORMED end) as tserv_fullin 
from ODS_REEFER 
where EQ_NBR = 'EGSU5014174'; 
+0

是的,它可以是一個行。 – Boom