2012-01-20 4 views
1

단일 열 값을 행으로 변환하려고합니다.열 값을 행으로 변환합니다.

표 원본 내용 :

Code  Amount   Expenditure 
10027 5000.00 LOCAL CONVEYANCE 
10027  320.00 LOCAL CONVEYANCE 
10116 1589.00 TRAVEL EXPENSES 
10095  350.00 LOCAL CONVEYANCE 
10095 1215.00 TRAVEL EXPENSES 

예상 출력 : 다음

Code LC TE 
10027 5000.00 NULL 
10027 320.00 NULL 
10116 NULL 1589.00 
10095 350.00 1215.00 
+0

코드 10027이있는 TE가 하나있는 경우 입력해야하는 위치는 무엇입니까? –

답변

1
;WITH PvtSource AS 
(
SELECT Code, 
     Amount, 
     Expenditure, 
     ROW_NUMBER() OVER (PARTITION BY Code,Expenditure 
           ORDER BY Code) AS RN 
FROM YourTable 
) 
SELECT Code, 
     [LOCAL CONVEYANCE] AS LC, 
     [TRAVEL EXPENSES] AS TE 
FROM PvtSource 
PIVOT (MAX(Amount) FOR Expenditure IN ([LOCAL CONVEYANCE],[TRAVEL EXPENSES])) P 
ORDER BY Code 
0

그것을 수행하는 방법에 대한 전체 예이다. 그것은 귀하의 질문에 넣어 의견에 관한 문제가 있습니다.

create table #original (
Code int, 
Amount float, 
Expenditure varchar(20) 
) 

create table #output (
Code int, 
LC float, 
TE float 
) 

insert into #original values (10027, 5000, 'LOCAL CONVEYANCE') 
insert into #original values (10027, 320, 'LOCAL CONVEYANCE') 
insert into #original values (10116, 1589, 'TRAVEL EXPENSES') 
insert into #original values (10095, 350, 'LOCAL CONVEYANCE') 
insert into #original values (10095, 1215, 'TRAVEL EXPENSES') 



insert into #output 
select o.Code, o.Amount, NULL 
from #original o 
where o.Expenditure = 'LOCAL CONVEYANCE' 

insert into #output 
select o.Code, NULL, o.Amount 
from #original o 
where o.Expenditure = 'TRAVEL EXPENSES' 
and o.Code not in (select Code from #output) 

update #output 
set TE = o.Amount 
from #output p 
inner join #original o on o.Code = p.Code and o.Expenditure = 'TRAVEL EXPENSES' 




select * from #output 

drop table #original 
drop table #output 
관련 문제