关于SQL查询行变列有关问题

关于SQL查询行变列问题
表格式为
地点名称        时间               关键字1      值
杭州          2015-3-16-1       SO2           10
杭州          2015-3-16-2       SO2           12
杭州          2015-3-16-3       SO2           13
杭州          2015-3-16-1       NO2           7
杭州          2015-3-16-2       NO2           11
杭州          2015-3-16-3       NO2           8

SQL怎么查询变成

地点名称        时间               SO2值         NO2值
杭州          2015-3-16-1       10                    7
杭州          2015-3-16-2       12                   11
杭州          2015-3-16-3       13                    8

可以实现么关于SQL查询行变列有关问题
------解决思路----------------------
--动态
DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)代替
SET @SQL='SELECT 地点名称,时间'
SELECT @SQL=@SQL+'
,ISNULL(MAX(CASE WHEN 关键字1='''+关键字1+''' THEN 值 END),0)['+关键字1+']'
FROM TB GROUP BY 关键字1
SET @SQL=@SQL+'FROM TB GROUP BY 地点名称,时间'
PRINT @SQL
EXEC(@SQL)
--静态
SELECT 地点名称,时间
,ISNULL(MAX(CASE WHEN 关键字1='NO2' THEN 值 END),0)[NO2]
,ISNULL(MAX(CASE WHEN 关键字1='SO2' THEN 值 END),0)[SO2]
FROM TB
GROUP BY 地点名称,时间

------解决思路----------------------
寫一個靜態sql

select 地点名称,时间,
sum(case when 关键字1='SO2' then 值 else 0 end) as SO2值,
sum(case when 关键字1='NO2' then 值 else 0 end) as NO2值
from tablename 
group by 地点名称,时间
order by 地点名称,时间