列值在表中作为列视图
问题描述:
我也由此表:列值在表中作为列视图
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。
有人可以帮我定义这样的观点吗?任何帮助将不胜感激。
答
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
答
像
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'