簡體   English   中英

如何在WHERE子句中使用Distinct

[英]How to use Distinct in WHERE clause

我有這個查詢來統計員工在一個月內的禮物數。

SELECT DISTINCT 
    COUNT([Attendance].[Status])
FROM
    [HRM].[tbl_EmployeeAttendance] [Attendance], [HRM].[tbl_EmployeeInfo] [Info]
WHERE 
    [Attendance].[Status] IN ('Early Left', 'Present', 'Half Day', 'Late In')
    AND [Info].[ID] = [Attendance].[EmpCode] 
    AND [Attendance].[EmpCode] = 266 
    AND CAST([Attendance].[AttendanceTimeIn] AS DATE) >= '2018-08-01' 
    AND CAST([Attendance].[AttendanceTimeOut] AS DATE) <= '2018-08-15'

現在有很多員工被標記為兩次或三次出勤。 就像一旦雇員離職,他的出勤就被安排成一次外出,而一旦他來就比按時來待。 因此,現在可以算是增加了同一天的出勤次數。 我想獲得日期之間的不同日期。

這是示例數據:

2018-04-04 18:12:30  2018-04-04 19:38:12   266  Present
2018-04-04 09:43:01  2018-04-04 09:58:41   266  Present
2018-04-05 16:40:52  2018-04-05 18:40:52   266  Present
2018-04-06 11:35:59  2018-04-06 11:48:49   266  Present

現在它是兩次對日期4進行計數,但是應該對它進行一次計數。

DISTINCT應該在COUNT()內部

因此,它將是:

SELECT COUNT(DISTINCT [Attendance].[Status]), 
       COUNT(DISTINCT CAST([Attendance].[AttendanceTimeIn] AS Date))
. . .

但是,我建議在FROM子句中使用適當的標准,顯式JOIN語法代替逗號:

SELECT COUNT(DISTINCT [Attendance].[Status]),
       COUNT(DISTINCT CAST([Attendance].[AttendanceTimeIn] AS Date))
FROM [HRM].[tbl_EmployeeAttendance] [Attendance] INNER JOIN
     [HRM].[tbl_EmployeeInfo] [Info]
     ON [Info].[ID] = [Attendance].[EmpCode] 
WHERE [Attendance].[Status] IN ('Early Left', 'Present', 'Half Day', 'Late In') AND 
      [Attendance].[EmpCode] = 266 AND 
      CAST([Attendance].[AttendanceTimeIn] AS DATE) >= '2018-08-01'AND 
      CAST([Attendance].[AttendanceTimeOut] AS DATE) <= '2018-08-15'

嘗試此操作以顯示最新日期並執行獨特的

SELECT COUNT(DISTINCT CAST([Attendance].[AttendanceTimeIn] as Date))
FROM [HRM].[tbl_EmployeeAttendance] [Attendance], [HRM].[tbl_EmployeeInfo] [Info]
WHERE [Attendance].[Status] IN ('Early Left', 'Present', 'Half Day', 'Late In')
AND [Info].[ID] = [Attendance].[EmpCode] AND [Attendance].[EmpCode] = 266 
AND CAST([Attendance].[AttendanceTimeIn] AS DATE) >= '2018-08-01' 
AND CAST([Attendance].[AttendanceTimeOut] AS DATE) <= '2018-08-15'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM