2013-10-16 3 views
3

SQL (SQL Server 2008)을 사용하여 피벗 테이블을 생성하려고합니다. 열 목록을 얻으려면 SQL과 함께 사용하면 멋지게 작동하는 stuff 함수를 사용하고 있습니다.SQL Server에서 변수가있는 SQL 기능 SQL

피벗 구조 (사용자 선택)의 동적 특성으로 인해 열 이름을 변수로 설정하려고합니다. 올바른 SQL Stuff 구문을 catch 할 수는 있지만 실행할 수는 없습니다. 어떤 아이디어? 아래

참조 코드 예제 : 작업 코드 :

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Station) 
        from #ResultCrosstab 
      FOR XML PATH(''), TYPE 
      ).value('.', 'NVARCHAR(MAX)') 
     ,1,1,'') 
Select @cols 

작동하지 않는다 코드 작동하지 않는 코드는 결과가 아닌 SQL 쿼리 자체를 반환

Declare @ColumnName varchar(100) set @ColumnName='Station' DECLARE @cols1 AS NVARCHAR(MAX) DECLARE @queryCol AS NVARCHAR(MAX) set @queryCol='STUFF((SELECT distinct '','' + QUOTENAME(' + @ColumnName + ') from #ResultCrosstab FOR XML PATH(''), TYPE ).value(''.'', ''NVARCHAR(MAX)'') ,1,1,'''')' Select @queryCol Select @cols1=(@queryCol) 

아래로.

의견이나 제안이 있으십니까? 건배 Hardeep

+1

실제 쿼리를 실행 EXEC SP_EXECUTESQL(@queryCol) 또는 EXEC(@queryCol) 필요합니다 @cols1

@queryCol의 값을 넣어 것입니다 @queryCol

Select @cols1=(@queryCol)의 값을 반환합니다. 내가 놓친 게 있니? – Fred

+2

나는 왜 사람들이 빈번하게 쉼표로 구분 된 문자열을/STUFF 메쏘드로 만드는 이런 방법을 언급하는지 모르겠다. 'STUFF'가하고있는 모든 일이'FOR XML PATH'가 생성하는 텍스트의','을 없애는 것입니다. –

+0

확인이 [** 동적 피벗 쿼리 ** (http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) 또는 [** 동적 피벗 여러 열 * *] (http://stackoverflow.com/questions/13072744/sql-server-pivot-with-multiple-x-axis-columns) – bvr

답변

2

는 쿼리를 실행하기보다는 선택합니다. Select @queryCol 당신은 당신이 쿼리를 실행하는 어디 볼 ​​수 없습니다