从行转换为列

时间:2010-06-07 09:05:37

标签: sql sql-server transpose

我有一张这样的表:

Name    State       Amount
------------------------------
Pump 1  Present     339
Pump 1  Optimized   88

我想把它转换成这样的东西:

Pump 1  Present     339 Optimized   88

如何使用MS SQL 2000执行此操作?我试图寻找解决方案,但找不到最合适的解决方案。

1 个答案:

答案 0 :(得分:1)

declare @t table(Name    varchar(10), State       varchar(10), Amount int)
insert into @t
select 'Pump 1',  'Present',     339  union all
select 'Pump 1',  'Optimized',   88 

select name,
max(case when state='Present' then 'Present' end),
max(case when state='Present' then Amount end),
max(case when state='Optimized' then 'Optimized' end),
max(case when state='Optimized' then Amount end)
from @t
group by name