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
실제 쿼리를 실행
EXEC SP_EXECUTESQL(@queryCol)
또는EXEC(@queryCol)
필요합니다@cols1
에
@queryCol
의 값을 넣어 것입니다@queryCol
Select @cols1=(@queryCol)
의 값을 반환합니다. 내가 놓친 게 있니? – Fred나는 왜 사람들이 빈번하게 쉼표로 구분 된 문자열을/STUFF 메쏘드로 만드는 이런 방법을 언급하는지 모르겠다. 'STUFF'가하고있는 모든 일이'FOR XML PATH'가 생성하는 텍스트의','을 없애는 것입니다. –
확인이 [** 동적 피벗 쿼리 ** (http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) 또는 [** 동적 피벗 여러 열 * *] (http://stackoverflow.com/questions/13072744/sql-server-pivot-with-multiple-x-axis-columns) – bvr