0
피벗 함수를 사용하여 열의 행 값을 별도의 열로 변환하려고합니다. 해당 열에 100 개 이상의 고유 값이 있으며 피벗 함수의 'for'절에있는 각 단일 값을 하드 코딩하는 것은 시간이 많이 걸리고 유지 관리 목적으로는 좋지 않습니다. 이 문제를 해결할 더 쉬운 방법이 있는지 궁금합니다.TSQL 피벗 긴 목록 열
감사
피벗 함수를 사용하여 열의 행 값을 별도의 열로 변환하려고합니다. 해당 열에 100 개 이상의 고유 값이 있으며 피벗 함수의 'for'절에있는 각 단일 값을 하드 코딩하는 것은 시간이 많이 걸리고 유지 관리 목적으로는 좋지 않습니다. 이 문제를 해결할 더 쉬운 방법이 있는지 궁금합니다.TSQL 피벗 긴 목록 열
감사
당신은이 유형의 쿼리에 대한 PIVOT
에서 동적 SQL을 사용할 수 있습니다. 당신이 필요로하는 데이터의 샘플을 게시 할 경우
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.condition_id)
FROM t c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT memid, ' + @cols + ' from
(
select MemId, Condition_id, condition_result
from t
) x
pivot
(
sum(condition_result)
for condition_id in (' + @cols + ')
) p '
execute(@query)
참조 : 동적 SQL은 각 항목에 하드 코딩 할 필요를 방지 할 수 있으며, 실행에 변환 할 항목의 목록을 얻을 것이다 변환하려면 내 쿼리를 조정하여 시연 할 수 있습니다.
가능한 [SQL Server 동적 PIVOT 쿼리?] (http://stackoverflow.com/questions/10404348/sql-server-dynamic-pivot-query) – RichardTheKiwi