2016-08-02 100 views
1

这只是我的存储过程来自工会的一部分选择集团通过在SQL Server枢轴2008

DECLARE @sql AS nvarchar(MAX) 

SET @sql = 'SELECT CASE 
WHEN [Customer Posting Group] IN (' + '''INHE''' + ',' + '''INH''' + ',' + '''IN HOUSE''' + ') THEN ' + '''IN HOUSE''' + ' 
WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''JLC''' + ' THEN ' + '''JLC GMA''' + ' 
WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''NUDERM''' + ' THEN ' + '''NUDERM GMA''' + ' 
ELSE [Customer Posting Group] 
END AS [Customer Posting Group] 
,ISNULL([' + CAST(@PrevYear AS NVARCHAR(10)) + '],0) as [' + CAST(@PrevYear AS NVARCHAR(10)) + '] 
,ISNULL([' + CAST(@YEARcurr AS NVARCHAR(10)) + '],0) as [' + CAST(@YEARcurr AS NVARCHAR(10)) + '] 
FROM #tmpPERregion       
PIVOT(SUM([GROSS AMOUNT]) 
FOR [MONTH YEAR] IN ([' + CAST(@PrevYear AS NVARCHAR(10)) + '],[' + CAST(@YEARcurr AS NVARCHAR(10)) + ']) 
) AS PivotSales' 

结果是

Customer Posting Group  2015         2016 
JLC GMA    2262533.000000       2181239.500000 
IN HOUSE    0.000000         380.000000 
IN HOUSE    200.000000        2940.000000 
LUZ     241354.000000       265481.500000 
MIN     214083.500000       95776.500000 
VIS     315547.000000       378649.000000 
NUDERM GMA    1588089.000000       1991609.750000 
LUZ     574094.000000       717892.250000 
MIN     120125.750000       106789.000000 
VIS     202294.500000       258561.000000 

我想我的结果是Group by客户发帖组

回答

0

尝试在下面一个,语法上可能是错误的,你需要检查相同。

SET @sql = 'Select t.CustomerPostingGroup 
        ,ISNULL([' + CAST(@PrevYear AS NVARCHAR(10)) + '],0) as [' + CAST(@PrevYear AS NVARCHAR(10)) + '] 
        ,ISNULL([' + CAST(@YEARcurr AS NVARCHAR(10)) + '],0) as [' + CAST(@YEARcurr AS NVARCHAR(10)) + '] 
      From (
         Select CASE 
             WHEN [Customer Posting Group] IN (' + '''INHE''' + ',' + '''INH''' + ',' + '''IN HOUSE''' + ') THEN ' + '''IN HOUSE''' + ' 
             WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''JLC''' + ' THEN ' + '''JLC GMA''' + ' 
             WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''NUDERM''' + ' THEN ' + '''NUDERM GMA''' + ' 
             ELSE [Customer Posting Group] 
           END AS CustomerPostingGroup 
           ,Sum([GROSS AMOUNT]) As GROSSAMOUNT 
           ,[MONTH YEAR] As MONTHYEAR 
         From #tmpPERregion 
         Where [MONTH YEAR] In (' + @PrevYear + ',' + @YEARcurr + ') 
         Group By CASE 
             WHEN [Customer Posting Group] IN (' + '''INHE''' + ',' + '''INH''' + ',' + '''IN HOUSE''' + ') THEN ' + '''IN HOUSE''' + ' 
             WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''JLC''' + ' THEN ' + '''JLC GMA''' + ' 
             WHEN [Customer Posting Group] =' + '''GMA''' + ' AND [COMPANY]=' + '''NUDERM''' + ' THEN ' + '''NUDERM GMA''' + ' 
             ELSE [Customer Posting Group] 
           END 
           ,[MONTH YEAR] 
        ) As t 
      PIVOT(SUM([GROSSAMOUNT]) 
      FOR [MONTHYEAR] IN ([' + CAST(@PrevYear AS NVARCHAR(10)) + '],[' + CAST(@YEARcurr AS NVARCHAR(10)) + ']) 
      ) AS PivotSales' 
+0

我已经这样做了,它不工作,它显示无效的列名后t.CustomerPostingGroup –

+0

我可以有一些数据样本? –