DECLARE @STARTYEAR VARCHAR(50) ,@STARTMONTH VARCHAR(50),
@ENDYEAR VARCHAR(50),@ENDMONTH VARCHAR(50),@ZYKJ VARCHAR(50),@CYKJ VARCHAR(50)DECLARE @YJ VARCHAR(1000)
SET @YJ=' SELECT SDID,ROW_NUMBER() OVER (ORDER BY GYZCZ) AS PM ,YEAR,MONTH, GYZCZ,
(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID) AS QNGYZCZ,
(GYZCZ-(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID)) AS ZL,
((GYZCZ-(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID))/(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID)) AS ZF INTO
#TABLE1 FROM T_Data AS T WHERE YEAR>='+@STARTYEAR+' AND YEAR <='+@ENDYEAR+' AND MONTH>='+@STARTMONTH+' AND MONTH<='+@ENDMONTH+' AND PDID='+@ZYKJ+' AND SDID IN ('''+@CYKJ+''') ORDER BY MONTH,SDID'
EXEC (@YJ)
DECLARE @YJ2 VARCHAR(2000)
SET @YJ2='SELECT * FROM #TABLE1'
EXEC (@YJ2)
那里写错了啊?
select子查询返回都是表,你當作字段使用了
SELECT SDID,ROW_NUMBER() OVER (ORDER BY GYZCZ) AS PM ,YEAR,MONTH, GYZCZ,
(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID) AS QNGYZCZ,
(GYZCZ-(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID)) AS ZL,
((GYZCZ-(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID))/(SELECT GYZCZ from [T_Data] where YEAR=T.Year-1 AND MONTH=T.Month AND SDID=T.SDID)) AS ZF INTO
#TABLE1 FROM T_Data AS T WHERE YEAR>=@STARTYEAR AND YEAR <=@ENDYEAR AND MONTH>=@STARTMONTH AND MONTH<=@ENDMONTH AND PDID=@ZYKJ AND SDID IN (''+@CYKJ+'') ORDER BY MONTH,SDID
我这样写的话,这里这样对吗?SDID IN (''+@CYKJ+'') ORDER
并不是说这个,而是所有的SELECT GYZCZ ... 返回都是表,你當作字段使用
我上面建立了一个#table1