Преобразовать значение столбца в строку - PullRequest
1 голос
/ 20 января 2012

Я хочу преобразовать значения одного столбца в строку.

Таблица Исходное содержимое:

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

Ответы [ 2 ]

1 голос
/ 20 января 2012
;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 голосов
/ 20 января 2012

Вот полный пример того, как это сделать.У него проблема с комментарием, который я вставил в ваш вопрос.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...