【问题标题】:Transposing from rows into columns从行转置为列
【发布时间】:2010-06-07 09:05:37
【问题描述】:

我有一张这样的桌子:

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

我想把它转换成这样的:

Pump 1  Present     339 Optimized   88

如何使用 MS SQL 2000 做到这一点?我试图寻找解决方案,但找不到最合适的解决方案。

【问题讨论】:

  • 你能把你的例子放大一点,以便更清楚你想要什么输出吗?例如,“Present”和“Optimized”是唯一可能的状态,还是可以有其他状态?每个泵的所有状态是否始终存在,或者某些泵的状态是否比其他泵多 - 如果是这样,您希望在这种情况下输出是什么样的?
  • 对于每个泵,它将有两个条目,一个是 Present,一个是 Optimized。我想要的是将这些状态放在一行而不是每个泵的两行。我希望这更清楚

标签: sql sql-server transpose


【解决方案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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2017-09-18
    • 2023-03-27
    • 2019-08-04
    相关资源
    最近更新 更多