请数据库高手们帮帮忙 看一下~ 这段代码

li_sunkai 2013-03-22 03:02:13
DECLARE @ColumnNames VARCHAR(3000)
SET @ColumnNames=''
SELECT
@ColumnNames = @ColumnNames + '[' + stationname + '],'
FROM
(
SELECT DISTINCT stationname FROM rec_PM
) t
SET @ColumnNames= LEFT(@ColumnNames, LEN(@ColumnNames)-1)
DECLARE @selectSQL NVARCHAR(3000)
SET @selectSQL=
'SELECT stationid,date,{0} FROM
(
SELECT stationid,date,pm25,stationname FROM rec_PM
) p
Pivot( Max(pm25) For stationname in ({0})) AS pvt
order BY date'
SET @selectSQL= REPLACE(@selectSQL,'{0}',@ColumnNames)
exec sp_executesql @selectSQL

end
调用这个存储过程现在能基本上实现我要的效果,但是有个问题啊,就是行列转换之后是这个情况
date 1# 2# 3#
2013-3-13 20 null null
2013-3-13 null 30 null
2013-3-13 null null 40
2013-3-14 22 null null
2013-3-14 null 32 null
2013-3-14 null null 42

我现在想要的是这个效果
date 1# 2# 3#
2013-3-13 20 30 40
2013-3-14 22 32 42
请问高人 我应该怎么改代码 谢谢~
...全文
265 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_sunkai 2013-03-22
  • 打赏
  • 举报
回复
谢谢大家,学习了。
發糞塗牆 2013-03-22
  • 打赏
  • 举报
回复
源数据贴出来
li_sunkai 2013-03-22
  • 打赏
  • 举报
回复
不行啊~ 还不是那个效果,跟先前的一样
szm341 2013-03-22
  • 打赏
  • 举报
回复
这里先聚合 SET @selectSQL= 'SELECT stationid,date,{0} FROM ( SELECT stationid,date,sum(pm25)pm25,stationname FROM rec_PM group by stationid,date,stationname ) p Pivot( Max(pm25) For stationname in ({0})) AS pvt order BY date'

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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