sql select group by 语句

来源:百度知道 编辑:UC知道 时间:2024/09/28 08:46:51
XJrain表里存放每天的雨量,我想一次显示过去一天,过去二天,过去三天的雨量统计,sql语句该如何写啊?

SELECT SUM(雨量) AS 雨量, 站名
FROM dbo.XJrain
WHERE (日期 > 20090829)
GROUP BY 站名

SELECT SUM(雨量) AS 雨量, 站名
FROM dbo.XJrain
WHERE (日期 > 20090830)
GROUP BY 站名

SELECT SUM(雨量) AS 雨量, 站名
FROM dbo.XJrain
WHERE (日期 > 20090831)
GROUP BY 站名
可能我讲得不够请楚,我想实现 的是:
select 一天雨量1,二天雨量2,三天雨量,站名 .....这样子,
各位只是一次显示了一个时间段的雨量,我想要的是一次显示三个时间段的雨量

select sum(雨量1),sum(雨量2)
,sum(雨量3), a.站名

from (
SELECT SUM(雨量) AS 雨量1, 站名
FROM dbo.XJrain
WHERE (日期 > 20090829)
GROUP BY 站名 ) a
left join

(SELECT SUM(雨量) AS 雨量2, 站名
FROM dbo.XJrain
WHERE (日期 > 20090830)
GROUP BY 站名) b on (a.站名=b.站名)
left join
(SELECT SUM(雨量) AS 雨量3, 站名
FROM dbo.XJrain
WHERE (日期 > 20090831)
GROUP BY 站名 )c on (b.站名=a.站名)
group by 站名

或者这样
select 站名,
sum(case when 日期 > 20090829 then 雨量 else 0 end ) 雨量1,
sum(case when 日期 > 20090830 then 雨量 else 0 end ) 雨量2,
sum(case when 日期 > 20090831 then 雨量 else 0 end ) 雨量3,
from dbo.XJrain
group by 站名
没测试 ,你试试吧。

select 站名,
sum(case when 日期 between '20090829' and '20090830' then 雨量1 else 0 end ) 雨量1,
sum(case when 日期 between '20090830' and '20090831' then 雨量2 else 0 end ) 雨量2,
sum(case when 日期 between '