열 이름을 기반으로 몇 가지 가정을했지만, 이와 비슷한 것을 사용하려는 것 같습니다. 이것은 당신이 요청한 열의 값을 얻기 위해 다음 둘 모두 UNPIVOT
과 PIVOT
을 적용
select *
from
(
select id,
language,
col + cast(QUESTION as varchar(10))
+cast(subquestion as varchar(10))
+cast(SubSubQuestion as varchar(10)) col,
value
from
(
select id, language,
cast(TotalCount as varchar(10)) TotalCount,
totalPercent,
question, subquestion, SubSubQuestion
from yourtable
) usrc
unpivot
(
value
for col in (totalcount, totalpercent)
) un
) srcpiv
pivot
(
max(value)
for col in ([TotalCount901], [totalPercent901],
[TotalCount902], [totalPercent902],
[TotalCount903], [totalPercent903],
[TotalCount909], [totalPercent909])
) p
이 SQL Fiddle with Demo
참고 항목 : UNPIVOT
를 수행 할 때 열이 같은 데이터 형이어야합니다. 일치하지 않으면 데이터 유형을 동일하게 변환/변환해야합니다. 당신은 변환 할 값의 알 수없는 번호가있는 경우
, 동적 SQL을 사용할 수 있습니다
DECLARE @query AS NVARCHAR(MAX),
@colsPivot as NVARCHAR(MAX)
select @colsPivot
= STUFF((SELECT ','
+ QUOTENAME(c.name +
cast(QUESTION as varchar(10))
+cast(subquestion as varchar(10))
+cast(SubSubQuestion as varchar(10)))
from yourtable t
cross apply sys.columns as C
where C.object_id = object_id('yourtable') and
C.name in ('TotalCount', 'TotalPercent')
group by c.name, t.question, t.subquestion, t.subsubquestion
order by t.SubSubQuestion
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'select *
from
(
select id,
language,
col + cast(QUESTION as varchar(10))
+cast(subquestion as varchar(10))
+cast(SubSubQuestion as varchar(10)) col,
value
from
(
select id, language,
cast(TotalCount as varchar(10)) TotalCount,
totalPercent,
question, subquestion, SubSubQuestion
from yourtable
) usrc
unpivot
(
value
for col in (totalcount, totalpercent)
) un
) srcpiv
pivot
(
max(value)
for col in (' + @colsPivot + ')
) p '
execute(@query)
는 당신이 오류가 발생합니다 의미 "작동하지 않는다"으로 SQL Fiddle with Demo
참조, 바람직하지 않은 결과를 제공 , 다른 것? – LittleBobbyTables
테스트 피들 : http://www.sqlfiddle.com/#!3/3a3fc/1 – mellamokb
그룹화 기준이란 무엇입니까? 하위/하위 질문의 수가 동적입니까? 동적으로 생성 된 SQL 코드를 사용해야하므로 동적 열 수를 사용하여 피벗하기가 어렵습니다. 피벗을 수행 할 수있는 결과를 표시하기 위해 응용 프로그램 언어를 사용하고 있습니까? 일반적으로 동적 열 너비 시나리오의 경우 더 쉽습니다. – mellamokb