【发布时间】:2018-09-06 07:59:02
【问题描述】:
我写了一个下面提到的查询,我需要在 GUI 中准备列表,我需要显示总记录的计数,现在我的记录是 119,这是正确的,但是当我应用计数函数时它变成 115。我想知道为什么会这样。
SELECT distinct E.EMP_CODE,
a.EMP_ID,
e.name,
E.ADHAR_NO,
a.CURRENT_STATUS,
D.NAME
FROM ACR a
JOIN EMPLOYEE E
ON E.EMP_ID=a.EMP_ID
JOIN DESIGNATION D
ON D.DESIGNATION_ID =E.DESIGNATION_ID
AND e.EMP_TYPE_ID NOT IN(02,03,04,06,08)
AND (e.DESIGNATION_ID IN (23,99)
OR d.DESIGNATION_CLASS IN(1,2))
AND (e.relief_type IS NULL
OR e.RELIEF_TYPE = 4)
JOIN REGION R
ON R.REGION_ID=E.REGION_ID
LEFT JOIN CIRCLE C
ON C.CIRCLE_ID =E.CIRCLE_ID
WHERE ACR_FOR_SESSION='2017-2018'
AND E.CIRCLE_ID IS NULL
AND E.REGION_ID =1
AND a.CURRENT_STATUS>1
总记录列表为119
现在应用计数超过DISTINCT E.EMP_CODE
SELECT count(distinct E.EMP_CODE)
FROM ACR a
JOIN EMPLOYEE E
ON E.EMP_ID=a.EMP_ID
JOIN DESIGNATION D
ON D.DESIGNATION_ID =E.DESIGNATION_ID
AND e.EMP_TYPE_ID NOT IN(02,03,04,06,08)
AND (e.DESIGNATION_ID IN (23,99)
OR d.DESIGNATION_CLASS IN(1,2))
AND (e.relief_type IS NULL
OR e.RELIEF_TYPE = 4)
JOIN REGION R
ON R.REGION_ID=E.REGION_ID
LEFT JOIN CIRCLE C
ON C.CIRCLE_ID =E.CIRCLE_ID
WHERE ACR_FOR_SESSION='2017-2018'
AND E.CIRCLE_ID IS NULL
AND E.REGION_ID =1
AND a.CURRENT_STATUS>1
Output: 115 (Wrong)
我错过了什么吗?请建议我最好的解决方案
【问题讨论】:
-
只需从计数中删除不同的关键字
-
可能是你有一些重复的 e.emp_code 值..,例如:一个 emp_code 有更多的行..
-
是的,我确实有一些员工的两条记录,但我只需要计算该员工一次
标签: sql oracle oracle11g oracle-sqldeveloper