2012-08-03 61 views
0

我也由此表:列值在表中作为列视图

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。

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

回答

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

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'