2017-07-19 7 views
0

このSQL動的文字列を作成しましたが、このエラーが発生すると "キーワード 'FOR'の近くに構文が正しくありません。SQLの実行中のキーワード 'FOR'の近くに不正な構文があります

declare @cols as nvarchar(max) 
     ,@query as nvarchar(max); 
set @cols = stuff(
        (select distinct ','+quotename(MatName) from viewProjVsMat 
        FOR xml path(''),type).value('.','nvarchar(max)') 
       ,1,1,''); 

set @query = 'select ProjName 
        ,'[email protected]+' 
      from viewProjVsMat 
      pivot (Monut for MatName in ('[email protected]+') 
       ) p'; 


execute(@query) 
+1

'Monut'は、合計、最大、などの集計関数に含まれる必要があります平均して – BeanFrog

答えて

1

問題は、例えば

平均等、そのような和、maxと集約関数に含まれる必要がMonut、ラインここ

pivot (Monut for MatName in ('[email protected]+') 

にある:

pivot (SUM(Monut) for MatName in ('[email protected]+') 

PIVOTの詳細については、hereを参照してください。

+0

ありがとうございます – user2020595

0

使用集計関数は、AVG、ミンのようなあなたの条件に依存し、最大

pivot (
       AVG(Monut) for MatName in ('[email protected]+') 
        ) p'; 

あなたの修正コード

declare @cols as nvarchar(max) 
      ,@query as nvarchar(max); 
    set @cols = 
    stuff(
         (select distinct ','+quotename(MatName) from viewProjVsMat 
         FOR xml path(''),type).value('.','nvarchar(max)') 
        ,1,1,''); 

    set @query = 'select ProjName 
         ,'[email protected]+' 
       from viewProjVsMat 
       pivot (
       AVG(Monut) for MatName in ('[email protected]+') 
        ) p'; 


    execute(@query) 
    Print @query 
関連する問題