0

私は常にエラーを出している次のクエリがあります。誰かが私がこれを解決するのを手伝ってくれるでしょうか?

「キーワード'@stqsql'の近くの構文が正しくありません」。

私のコードは次のとおりです。

  declare @strsql nvarchar(max)
  set @strsql=select merchantid from employee

  select * 
  from 
  (
     Select s.employeeid,
           COUNT(*) as TotCount 
     from Employee s  
     GROUP BY s.employeeid 
  )as a
  pivot (avg(TotCount) for employeeid IN ('+@stqsql+')) AS NoOfRec
4

1 に答える 1

0

残念ながら、動的列を取得しようとしている方法は機能しません。次のようなものを使用する必要があります。

DECLARE @colsPivot AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

-- this gets the list of values that you want to pivot
select @colsPivot = STUFF((SELECT distinct ', ' + QUOTENAME(merchantid ) 
                    from employee 
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

-- since you are use a dynamic list you have to use dynamic sql
set @query = 'SELECT ' + @colsPivot + ' from 
             (
                SELECT s.employeeid,
                    COUNT(*) as TotCount
                FROM Employee s
                GROUP BY s.employeeid
            ) src
            pivot 
            (
                avg(TotCount)
                for employeeid  in (' + @colsPivot + ')
            ) p '

execute(@query)
于 2013-01-10T16:30:37.800 に答える