表中的列值作为视图中的列

时间:2012-08-03 17:22:50

标签: mysql pivot views

我有一张桌子:

CityID     ParamName      ParamValue
------    -----------     ----------
  1       Temperature        23    
  1       Humidity           56
  2       Temperature        27
  2       Humidity           49

我想创建一个像这样的视图:

CityID    Temperature     Humidity
------    -----------     --------
  1          23              56
  2          27              49

我的数据库引擎是MySQL。

有人可以帮我定义这样的观点吗? Anyhelp将不胜感激。

2 个答案:

答案 0 :(得分:1)

MySQL没有PIVOT功能,因此您需要CASE声明:

SELECT CityId,
    SUM(CASE WHEN ParamName = 'Temperature' THEN ParamValue END) Temperature,
    SUM(CASE WHEN ParamName = 'Humidity' THEN ParamValue END) Humidity
FROM yourTable
GROUP BY CityId

请参阅SQL Fiddle with Demo

答案 1 :(得分:0)

类似

select someTable.CityID,temps.ParamValue as Temperature,Hums.ParamValue as Humidity
From SomeTable
inner join someTable temps 
On someTable.CityID = temps.CityID and temps.ParamName = 'Temperature'
inner join SomeTable hums  
On someTable.CityID = hums.CityID and hums.ParamName = 'Humidity'