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 に答える