0

下面是我的表中的 3 列以及其他 4 列。

ID  EMP_ID  APPROVAL_STATUS
103 0023946 Pending
105 0025830 Pending
109 0022786 Pending
111 0023946 Pending

我的问题:计算计划休假的员工人数的查询是什么?

请记住,ID 为 0023946 的员工已经申请了 2 次暂停,但仍然应该计数为 1,其余的加到总值中。

我在 ASP 中编写的查询:

SELECT COUNT(*), EMP_ID 
FROM TimeoffDetails 
WHERE APPROVAL_STATUS = 'Pending' 
GROUP BY EMP_ID

实际结果应该是 3 名员工请假。但上面的查询在 asp 中产生 1,而我在数据库中运行这个查询,结果为 3。

请帮助我找到解决方案。

4

2 回答 2

0

您可以使用 DISTINCT COUNT(对于单个总值,您不需要使用 GROUP BY):

SELECT COUNT(DISTINCT EMP_ID) FROM table_name TimeoffDetails WHERE APPROVAL_STATUS='Pending'

或与您的 GROUP BY:

SELECT COUNT(DISTINCT EMP_ID), EMP_ID FROM table_name TimeoffDetails WHERE APPROVAL_STATUS='Pending' GROUP BY EMP_ID
于 2013-03-10T06:46:31.493 回答
0

好的,这有效:

SELECT Count(*) AS count_employee FROM (SELECT DISTINCT EMP_ID FROM timeoffdetails);
于 2013-03-10T07:38:40.203 回答