关于select *,count(distinct *) from...的问题!!求救!! 10
小妹把原SQL和执行结果附上,求帮助。1.SELECTCOUNT(distinctb.person_id)FROMPS_BO_ROLEa,PS_RD_PERSONb,PS...
小妹把原SQL和执行结果附上,求帮助。
1.
SELECT COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d WHERE a.bo_id = b.bo_id
AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS='A' AND d.TZ_RYZT='Y'
AND a.ROLE_TYPE_ID IN('400081','400076','400024','400065','400022','400064','400023');
2.
SELECT a.ROLE_TYPE_ID,COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d
WHERE a.bo_id = b.bo_id AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS='A' AND d.TZ_RYZT='Y'
AND a.ROLE_TYPE_ID IN('400081','400076','400024','400065','400022','400064','400023') group by a.ROLE_TYPE_ID;
这是两句SQL,基本相同,2在1的基础上多查询了一个字段罢了,可是结果却。。。1,2结果按顺序如下
明显看到,查不重复全部是39条,可是多显示一个字段就变成47条了,,,求帮助,想得到的结果是总数39并且查询显示a.ROLE_TYPE_ID字段。。。急!!!!!!!!!
两个SQL从“from”开始后面的都一样!! 展开
1.
SELECT COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d WHERE a.bo_id = b.bo_id
AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS='A' AND d.TZ_RYZT='Y'
AND a.ROLE_TYPE_ID IN('400081','400076','400024','400065','400022','400064','400023');
2.
SELECT a.ROLE_TYPE_ID,COUNT(distinct b.person_id) FROM PS_BO_ROLE a ,PS_RD_PERSON b ,PS_TZ_JZY_INF_T c ,PS_TZ_PERS_EXT_TBL d
WHERE a.bo_id = b.bo_id AND b.person_id = c.person_id AND b.person_id = d.person_id AND c.TZ_EMPL_STATUS='A' AND d.TZ_RYZT='Y'
AND a.ROLE_TYPE_ID IN('400081','400076','400024','400065','400022','400064','400023') group by a.ROLE_TYPE_ID;
这是两句SQL,基本相同,2在1的基础上多查询了一个字段罢了,可是结果却。。。1,2结果按顺序如下
明显看到,查不重复全部是39条,可是多显示一个字段就变成47条了,,,求帮助,想得到的结果是总数39并且查询显示a.ROLE_TYPE_ID字段。。。急!!!!!!!!!
两个SQL从“from”开始后面的都一样!! 展开
2个回答
展开全部
你出现这个的原因你得先弄明白了
比如以400081和400023两个id为例
他们的person_id都有为1的,但是group by 后,这两个1分别计数,可是你第一个查询,就会把这两个1合并,只有一条,所以会造成结果2比结果1多出许多来
说你的需求吧,或者截个图做一下你想要的结果
比如以400081和400023两个id为例
他们的person_id都有为1的,但是group by 后,这两个1分别计数,可是你第一个查询,就会把这两个1合并,只有一条,所以会造成结果2比结果1多出许多来
说你的需求吧,或者截个图做一下你想要的结果
追问
1.统计所有部门人数(person_ID去重复)2.按部门显示人数,就是一句SQL:select 部门,对应人数 from......。(person_ID去重复)。这是两句SQL,最后1的人数=2的人数之和,就对了,我现在的39!=47。不知道是否解释明白0.0
追答
比如有一个person_id同时属于两个部门,这事你没法解决,是你数据的问题吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-05-30
展开全部
用select语句
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询