关于SQL查询行变列问题

wish907 2015-03-16 03:29:39
表格式为
地点名称 时间 关键字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

可以实现么
...全文
84 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
reenjie 2015-03-16
  • 打赏
  • 举报
回复
寫一個靜態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 地点名称,时间
还在加载中灬 2015-03-16
  • 打赏
  • 举报
回复
--动态
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 地点名称,时间

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧