2010-06-07 21 views
2

列我有一个这样的表:从行移调成

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

我想将它转来是这样的:

Pump 1 Present  339 Optimized 88 

我怎样才能做到这一点与MS SQL 2000?我试图寻找解决方案,但找不到最合适的解决方案。

+0

您能否让您的示例稍微大一些以使其更清晰地表达您想要的输出?例如,“存在”和“优化”是唯一可能的状态,还是可能存在其他状态?是否所有的状态都会出现在每个泵上,或者某些泵是否有更多的泵 - 如果是这样,那么在这种情况下,您希望输出看起来如何? – psmears 2010-06-07 09:11:49

+0

对于每个泵,它将有两个入口一个存在和一个优化。我想要的是将这些状态放在一行中,而不是每个泵的两行。我希望这使得更清晰 – 2010-06-07 09:26:13

回答

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 
+0

谢谢,它的工作:) – 2010-06-07 09:47:57