Oracle 列變行,衍變

SELECT S.T_QYID,S.T_JKDID,S.YZNAME,S.YZVALUE,
       CASE 
         WHEN S.YZNAME = 'YC' THEN 
          DECODE((SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='煙塵折算值'),
          '','-',(SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='煙塵折算值'))
         WHEN S.YZNAME = 'SO2' THEN 
          DECODE((SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='SO2折算值'),
          '','-',(SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='SO2折算值')) 
         WHEN S.YZNAME = 'NOX' THEN 
          DECODE((SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='NOX折算值'), 
          '','-',(SELECT FQ.T_YZ_VALUE||'' FROM ZTS_FQYZSJJL FQ WHERE FQ.T_QYID = S.T_QYID AND FQ.T_JKDID = S.T_JKDID AND FQ.T_YZ_NAME='NOX折算值'))
         ELSE
           '-'
        END AS ZSZ
 FROM (WITH TEMP AS
 (SELECT T.T_QYID,T.T_JKDID,
   DECODE(MAX(DECODE(T_YZ_NAME, '煙塵', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '煙塵', T_YZ_VALUE))) 煙塵,      
   DECODE(MAX(DECODE(T_YZ_NAME, '流速', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '流速', T_YZ_VALUE))) 流速,   
   DECODE(MAX(DECODE(T_YZ_NAME, '流量', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '流量', T_YZ_VALUE))) 流量,   
   DECODE(MAX(DECODE(T_YZ_NAME, 'SO2', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, 'SO2', T_YZ_VALUE))) SO2,     
   DECODE(MAX(DECODE(T_YZ_NAME, 'NOx', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, 'NOx', T_YZ_VALUE))) NOX,    
   DECODE(MAX(DECODE(T_YZ_NAME, '氧氣', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '氧氣', T_YZ_VALUE))) 氧氣,   
   DECODE(MAX(DECODE(T_YZ_NAME, '溫度', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '溫度', T_YZ_VALUE))) 溫度,   
   DECODE(MAX(DECODE(T_YZ_NAME, '溼度', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '溼度', T_YZ_VALUE))) 溼度,   
   DECODE(MAX(DECODE(T_YZ_NAME, '壓力', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '壓力', T_YZ_VALUE))) 壓力,   
   DECODE(MAX(DECODE(T_YZ_NAME, '標況流量', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '標況流量', T_YZ_VALUE))) 標況流量,   
   DECODE(MAX(DECODE(T_YZ_NAME, '熱態流量', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '熱態流量', T_YZ_VALUE))) 熱態流量,   
   DECODE(MAX(DECODE(T_YZ_NAME, '煙道截面積', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '煙道截面積', T_YZ_VALUE))) 煙道截面積,   
   DECODE(MAX(DECODE(T_YZ_NAME, '氯化氫', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '氯化氫', T_YZ_VALUE))) 氯化氫,   
   DECODE(MAX(DECODE(T_YZ_NAME, '一氧化碳', T_YZ_VALUE)),'','-',MAX(DECODE(T_YZ_NAME, '一氧化碳', T_YZ_VALUE))) 一氧化碳
   FROM ZTS_JKDXX J
    LEFT JOIN ZTS_PFKJBXX P
      ON P.GUID = J.T_PWK_ID
    LEFT JOIN (SELECT QY.GUID, QY.T_QYJC, QY.T_YQLX, QY.T_GZCD
                FROM ZTS_QYJBXX QY
               WHERE QY.T_SHZT IN ('待入網', '已入網')) QY
      ON P.T_QY_ID = QY.GUID
    LEFT JOIN ZTS_FQYZSJJL T
      ON QY.GUID = T.T_QYID AND T.T_JKDID = J.GUID
   WHERE J.T_MONITOR_TYPE = '廢氣' 
   GROUP BY T.T_QYID,T.T_JKDID)      
   SELECT T_QYID,T_JKDID,YZNAME,YZVALUE FROM TEMP UNPIVOT
 (YZVALUE FOR YZNAME IN(煙塵,流速,流量,SO2,NOX,氧氣,溫度,溼度,壓力,標況流量,熱態流量,煙道截面積,氯化氫,一氧化碳 
 ))T
 )S
 --WHERE S.T_JKDID = 'EE83BACA778F483A8ED4011F85627959'
 ;

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章