我正在修改计算每班工作人员数量的Crystal Report。在查看SQL时,我注意到一些事情似乎并不正确。我正在复制和粘贴4个基本相同的SQL语句,除了两个计数(一个不同的计数),而另外两个列出了工作人员的personID(一个不同的列表)。 DISTINCT Count语句不会产生预期结果。希望有人能帮我理解发生的事情:
(select (personid) from rpt_peoplestaffingroledetail where roleid in (select roleid
from rpt_peopleroledef where affectdash = 1) and shiftid in
(select shiftid from rpt_staffingeventshiftdetail where driveshiftid = '623044'))
给出: 人物:51135,51135,51135,61905,62926
有意义的是,有三个人配备了这个班次,一个有三个角色。
当我执行不同的列表时:
(select distinct (personid) from rpt_peoplestaffingroledetail where roleid in
(select roleid from rpt_peopleroledef where affectdash = 1) and shiftid in
(select shiftid from rpt_staffingeventshiftdetail where driveshiftid = '623044'))
我得到: 人:51135,61905,62926
这似乎也是正确的,有三个人分配到这个班次(一个有多个角色,但是明显使它有效)
所以,当我想计算人员数量时:
(select count (personid) from rpt_peoplestaffingroledetail where roleid in
(select roleid from rpt_peopleroledef where affectdash = 1) and shiftid in
(select shiftid from rpt_staffingeventshiftdetail where driveshiftid = '623044'))
结果是5.这是合乎逻辑的,3人配备人员+一人3人。
所以这就是我遇到麻烦的地方,我只想要计算不同的人物ID:
(select distinct count (personid) from rpt_peoplestaffingroledetail where roleid in
(select roleid from rpt_peopleroledef where affectdash = 1) and shiftid in
(select shiftid from rpt_staffingeventshiftdetail where driveshiftid = '623044'))
这里的结果集仍然是5.而且我认为它应该是3,但我无法弄清楚为什么它是错误的。
建议?
答案 0 :(得分:4)
select distinct count (personid)
表示计数(只是一个数字),然后是一个不同的列表(仍然是一个数字)。
您需要select count (distinct personid)
,这意味着计算不同的personid
。