sql专家帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/18 16:52:31
现有用户表user的字段如下
depart_code name sex birthday
010101 张三 男 1980-5-1
010101 李四 男 1972-8-14
010101 王五 女 1982-4-22
010102 张三 男 1984-2-1
010201 张三 男 1975-5-15
010202 张三 男 1978-5-30

要统计出每一年的出生人数,用group by的时候年份不连续的那年就给过滤掉了,而我现在是要统计出75,76,77.......82,83,84(连续年)每年的人数,该年没有出现的统计为0,后台数据库为sql2000(sp4),过程最好不要采用中间库或者存储过程,谢谢了,帮帮忙!

执行结果:
年份 数量
1972 1
1973 0
1974 0
1975 1
1976 0
1977 0
1978 1
1979 0
1980 1
1981 0
1982 1
1983 0
1984 1

--需要创建一个表
CREATE TABLE T_cube
(
birth INT ,total INT
)
GO
--使用循环语句,将统计的数据插入到T_cube表中
DECLARE @year INT
SET @year =1975
WHILE @year<=1984
BEGIN
IF EXISTS ( SELECT COUNT(YEAR(birthday )) FROM [user] GROUP BY birthday HAVING YEAR(birthday )=@year)
BEGIN
INSERT T_cube
SELECT YEAR(birthday ) ,COUNT(YEAR(birthday )) FROM [user]
GROUP BY birthday
HAVING YEAR(birthday )=@year
END
ELSE
BEGIN
INSERT T_cube
SELECT @year,0
END
SET @year=@year+1
END
GO
--显示结果
SELECT * FROM T_cube

group by 是不会出现带 0 的结果的,比如说你的 1973 0 1974 0 这样,分组功能,没有的组哪来给你分呢,出来结果自己手工添加一下不就行了,数据库也不是万能的