2017-08-15 87 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