2次使用动态SQL
DECLARE @SQL VARCHAR(8000)
DECLARE @ESQL VARCHAR(8000)
SET @SQL=''
SELECT @SQL= @SQL+ ','+quotename(B.NAME,'''')+'=isnull(sum(CASE CODE when '+quotename(A.CODE,'''')+' THEN NQTY END),0)'
FROM T A(NOLOCK),Codename B(NOLOCK) WHERE A.CODE = B.CODE GROUP BY A.CODE,B.NAME
Set @ESQL = '
SELECT P.DEPT,P.PKG,P.LOT'+@SQL+' FROM (
SELECT * FROM (
select DEPT,PKG,LOT'+@SQL+',TOTAL=sum(NQTY) from T(NOLOCK)
Group by DEPT,PKG,LOT with rollup
) G LEFT OUTER JOIN (SELECT LOT AS HLOT,LOTNAME,STOCK1,STOCK2,STOCK3,STOCK4,STOCK5
FROM T(NOLOCK) WHERE ) H ON G.LOT=H.HLOT ) P '
Exec(@ESQL)
问题出现在‘SELECT P.DEPT,P.PKG,P.LOT'+@SQL+' FROM (’
错误消息是
Server: Msg 207, Level 16, State 3, Line 2
Invalid column name 'NQTY'.
Server: Msg 207, Level 16, State 1, Line 2
Invalid column name 'CODE'.
怎么办呢?