WITH #年度预测 AS ( SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID ,t1.FQTY,t1.FYEAR '年份' ,REPLACE(T1.DATEM,'FMONTH','') '月份' ,DATEADD(MONTH, DATEDIFF(MONTH, 0, CONCAT(T1.FYEAR,'-',REPLACE(T1.DATEM,'FMONTH',''),'-01')), 0) AS 'startDate' FROM ( SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMATERIALID,t0e.FUNITID,FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12 FROM T_PLN_FORECAST2YEAR t0 --表头 INNER JOIN T_PLN_FORECAST2YEARENTRY t0e on t0.FID = t0e.FID --表体 ) t0 UNPIVOT ( FQTY FOR dateM IN (FMONTH1,FMONTH2,FMONTH3,FMONTH4,FMONTH5,FMONTH6,FMONTH7,FMONTH8,FMONTH9,FMONTH10,FMONTH11,FMONTH12) ) AS t1 ) SELECT * ,DATEADD(MONTH, DATEDIFF(MONTH, 0, DATEADD(MONTH, 1, t0.startDate)), -1) AS 'endDate' FROM #年度预测 t0 ORDER BY t0.startDate,t0.FSEQ