좋아, 한번 더! 먼저, 예를 들어 테이블 변수 대신 임시 테이블을 만들었고 @tablecolumns 변수는이를 필요로합니다. 실제로 적용되지는 않지만 코드를 복사/붙여 넣기하면 변경 사항을 알게되었습니다.
@tablecolumns는 필요한 동적 조각이며, 피벗 테이블의 경우 "[A], [B], [C] ...."처럼 보입니다.
이제 @tablecolumns 변수에 올바르게 던져 넣기 위해 동적 SQL로 쿼리를 실행해야합니다.
create table #toystab (Toys nvarchar(1), Cost decimal (5,2), Sell decimal (5,2))
insert into #toystab values ('A', 5.50, 6.60)
insert into #toystab values ('B', 6.50, 7.60)
insert into #toystab values ('C', 7.50, 8.60)
insert into #toystab values ('D', 8.50, 9.60)
insert into #toystab values ('E', 11.50, 12.60)
insert into #toystab values ('F', 13.50, 14.60)
DECLARE @tablecolumns nvarchar(max)
select @tablecolumns = (COALESCE(@tablecolumns +',', '')
+ '[' + convert(nvarchar(10), #Toystab.Toys) +']')
from #toystab
declare @Query nvarchar(max)
set @Query = '
select *
from (
select Toys Toy1, Toys ToyName,
CONCAT(cast(Cost as varchar(10)), '','', cast(Sell as varchar(10))) as [ConcatenatedPrice]
from #toystab) Toyz
pivot
(
MAX(ConcatenatedPrice)
for Toy1 in (' + @tablecolumns+ ')
)
as [Pivot]
'
exec(@Query)
drop table #toystab
(실제 쿼리가 도착하는 방법을 집중적에 따라 당신이보기에서 쿼리 자체를 놓고 대신 뷰에서 필요한 연결하여/선택하기로 결정할 수있다, 나는 동적 SQL 그렇게 가끔이 쉽게 홀수 비트를 찾을 수)
몇 가지 유의하십시오. 먼저, Toys 열을 두 번 선택합니다. 한 번 피벗하고 한 번 열을 계속 선택합니다. 둘째, CONCAT 문에서 구분 기호 '', ''는 따옴표 (")가 아니며 두 개의 아포스트로피 ('')입니다. 따옴표를 지정하면", "잘못된 열 오류가 발생합니다. 마지막으로 (@query)에 괄호가 포함되어 있는지 확인하십시오.
SQL에서 가장 단순하지는 않지만 ... SQL은 데이터 검색 레이어로, 표시 레이어가 많지 않습니다. 가장 쉬운 방법 이것은 결과를 Excel로 내보내고 피벗되도록합니다. 당신이 순수한 SQL 응답을 원한다면,이 질문은 매일 약 10 번 여기에옵니다 .... 대답을 위해 사이트를 검색하십시오. – Twelfth
어느 dbms ???????? – Eric
Microsoft SQL 2012 – Etex