日期:2014-05-17  浏览次数:20438 次

求sql分组聚合问题

SELECT COUNT(b.sex) AS num,b.sex FROM 
(
SELECT CASE WHEN dbo.fn_getSexByid(A.idcard,1)!='未知' THEN dbo.fn_getSexByid(A.idcard,1) ELSE A.sex END as sex FROM
(
 SELECT DISTINCT(tbp.idcard),tbp.sex
 FROM t_house th 
 RIGHT JOIN t_BasePeople tbp 
 ON th.idcard_id = tbp.id 
 LEFT JOIN t_BaseHouse tbh 
 ON th.house_id = tbh.id 
 LEFT JOIN v_user u 
 ON tbh.SQ_ID = u.sq_id 
 WHERE tbp.idcard NOT LIKE '%.%' AND
) A
) B
WHERE b.sex IS NOT NULL
GROUP BY b.sex


以上已男女来分组,统计不同性别所对应的人数。但是现在有另一个需求,页面报表展现的时候需要传入时间,但是我distinct了idcard,再把时间加上,distinct就没用了。请问这种带有时间的分组聚合,应该怎么写?好多页面都是这种情况。所以不弄会,肯定写不下去了。。。求帮助。先谢谢了
------解决方案--------------------
lz给出表结构和要求的结果样式吧.