深入理解start with.....connect by (三)静态行转列

用过很多的行转列列转行方法,也看过网友总结的行列转换,今天又尝试了一种新的方法.......
看下面的代码
select
-- -? as SID,
A.T_JJZB_ID  AS  SecuCode,
NULL   AS  PUBDATE,
NULL   AS  InfoSource,
A.FSRQ 
AS  EndDate,
NULL   AS  TYPE_CODE,
DECODE(RN,
1 , ' 债券 ' , 2 , ' 股票 ' , 3 , ' 货币资金 ' , 4 , ' 国债 ' , 5 , ' 企业债 ' , 6 , ' 金融债 ' , 7 , ' 可转债 ' , 8 , ' 其它债券 ' , 9 , ' 其它资产 ' , 10 , ' 买入返售债券 ' , 11 , ' 权证 ' , NULL )
AS  SecuCategoryCode,
DECODE(RN,
1 ,A.ZQZSZ, 2 ,A.Gpsz, 3 ,A.HBZJ, 4 ,A.GZ, 5 ,A.QYZ, 6 ,A.JRZ, 7 ,A.KZZ, 8 ,A.Qtsz, 9 ,A.QTZC, 10 ,A.MRFSZQ, 11 ,A.QZSZ, NULL )
AS  HoldingVal,
NULL   AS  PCTOfNAV,
DECODE(RN,
1 ,A.ZQZSZ_ZSZBL, 2 ,A.Gp_zszbl, 3 ,A.HBZJ_ZSZBL, 4 ,A.GZ_zszbl, 5 ,A.QYZ_zszbl,
6 ,A.JRZ_zszbl, 7 ,A.KZZ_zszbl, 8 ,A.Qtsz_zszbl, 9 ,A.QTZC_zszbl, 10 ,A.MRFSZQ_zszbl, 11 ,A.QZ_ZSZBL, NULL )
AS  PCTOfTotalAsset,
SYSDATE 
AS  EntryTime,
SYSDATE 
AS  UpdateTime,
A.ZHXGRQ 
AS  GroundTime,
' GAZX '   AS  ResourceID,
A.GUID 
AS  RecordID
FROM  JJTZZH_ZC A  JOIN  (
select   level  rn  from  dual connect  by    level   <= 11 ) B
ON  A.SCBZ = 0   AND  A.GKBZ = 1   AND  DECODE(RN, 1 ,A.ZQZSZ_ZSZBL, 2 ,A.Gp_zszbl, 3 ,A.HBZJ_ZSZBL, 4 ,A.GZ_zszbl, 5 ,A.QYZ_zszbl,
6 ,A.JRZ_zszbl, 7 ,A.KZZ_zszbl, 8 ,A.Qtsz_zszbl, 9 ,A.QTZC_zszbl, 10 ,A.MRFSZQ_zszbl, 11 ,A.QZ_ZSZBL, NULL IS   NOT   NULL
-- ---AND A.GUID=?


用connect得到要转换的列数,在得到要转换的列,注意值的对应。

你可能感兴趣的:(by,connect)