0

我有一张桌子,它需要改变

Key                  Value
CapacityColdBTU      2000
PowerLevelCold       B
Inverter/Standard    Standard
CapacityColdBTU      1500
PowerLevelCold       B
Inverter/Standard    Inverter

在我使用它之前,该表应如下所示。我不能在超过 1 个条件的搜索中使用该表。我该如何改变它?

CapacityColdBTU   PowerLevelCold    Inverter/Standard
2000              B                 Inverter

谢谢

4

1 回答 1

3

您可以使用PIVOT

select *
from
(
  select [key], value
  from yourtable
) x
pivot
(
  max(value)
  for [key] in ([CapacityColdBTU], [PowerLevelCold], [Inverter/Standard])
) p

请参阅带有演示的 SQL Fiddle

或者您可以使用CASE带有聚合的语句,请注意此版本会生成您列出的结果,其中包含字段Inverter中的值[Inverter/Standard]

select 
  max(case when [key] = 'CapacityColdBTU' 
        then value end) as CapacityColdBTU,
  max(case when [key] = 'PowerLevelCold' 
        then value end) as PowerLevelCold,
  min(case when [key] = 'Inverter/Standard' 
        then value end) as [Inverter/Standard]
from yourtable

请参阅带有演示的 SQL Fiddle

如果您有一个id或某些字段用主记录标识这些字段中的每一个,那么您可以显示每个 id 的值。

于 2012-10-24T18:49:19.000 回答