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'
 ;

 

 

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