因为你的参数是要动态改变的,所以应该用存储过程解决比较好。<br>给你个大致思路吧<br>表1 是原始数据表,包含字段 出生日期,性别<br>第一步<br>建一个视图<br>CREATE VIEW 视图1 AS<br>Select Count(性别) as 人数, YEAR(GETDATE()) - Year(出生日期) + 1 as 年龄, 性别 From 表1 Group by 性别, YEAR(GETDATE()) - Year(出生日期) + 1<br>视图建好后,打开视图,就可以得到各年龄男女的分布人数。<br><br>第二步,建一个存储过程<br>CREATE PROCEDURE 过程1<br> @Rang int<br> AS<br>set nocount on<br>Select Sum(人数) as 人数, 年龄 / @Rang as 范围, 性别 From 视图1 Group by 性别, 年龄 / @Rang<br><br>Go<br><br>得到的结果集中,对每个范围均有两个记录(除非这个年龄段某个性别人数为0),一个是男的,一个是女的,如果要显示成 年龄段,人数,男,女的方式 ,再做个 Join 就可以了。<br><br>年龄段是以 0至N的方式显示的,比如 @Rang=5, 表示是0: 0-4, 1: 表示 5-9, 如果要范围从1开始计数,可以用 年龄 / @Rang + 1<br><br>你说的0-5, 5-10,那5岁到底属于哪个范围,不明白。