一个SQL查询,数据由列转行的问题

webgdd 2003-10-18 11:07:32
一个SQL查询,数据由列转行的问题
一个数据表,结构如下:
S_no Year Month Rain
1 1990 1 11
1 1990 2 5
... ... . ..
19 1998 12 23
现作如下查询:
查询某一个站点(S_NO)中所有RAIN的资料,要求查询结果结构如下:
S_no Year 1月 2月......12月

我想在查询结果中添加一列,用于统计RAIN全年的总和,
该怎样构造查询语句?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
webgdd 2003-10-18
  • 打赏
  • 举报
回复
可这种查询方法的执行效率不是太高啊
sdhdy 2003-10-18
  • 打赏
  • 举报
回复
try:
declare @sql varchar(8000)
declare @S_no int
set @S_no =1 --假设站号为1
set @sql='select Year'
select @sql=@sql+',sum(case Month when '''+Month+''' then Rain else 0 end) ['+month+'月]'
from (select distinct Month from tablename) a
select @sql=@sql+',sum(Rain) as 总和 from tablename where s_no='+@S_no+' group by Year'
--print @sql
exec(@sql)
yoki 2003-10-18
  • 打赏
  • 举报
回复
select s_no,year,
sum(case month when 1 then Rain else 0 end) as 1月,
sum(case month when 2 then Rain else 0 end) as 2月,
.
.
.
sum(case month when 12 then Rain else 0 end) as 12月
from table1
group by s_no,year
yoki 2003-10-18
  • 打赏
  • 举报
回复
select s_no,year,
sum(case month when 1 then Rain else 0 end) as 1月,
sum(case month when 2 then Rain else 0 end) as 2月,
.
.
.
sum(case month when 12 then Rain else 0 end) as 12月
group by s_no,year

22,206

社区成员

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

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