2012-08-03 51 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'