簡體   English   中英

MYSQL 如何根據日期和響應的多個標准求和

[英]MYSQL How can I sum based on multiple criteria by date and by response

我正在嘗試根據 3 列匯總提供的小時數以及接受或拒絕的小時數。 1 列是日期 2 列是小時 3 是標准。 我需要將他們接受或拒絕 OT 的日期范圍之間的小時數相加。 我需要能夠在指定的日期范圍內計算是和否的響應。 @ 第 4 個總和行它不能正常工作,並且每隔一個總和行顯示錯誤的計數似乎工作。 看來我有兩個以上的條件是失敗的。

SELECT
  employee.employee_ID,
  employee.LastName,
  employee.FirstName,
  employee.Department,
  employee.HomePhone,
  employee.CellPhone,
  SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Yes' THEN ot_tracking.hours else 0 END) AS OT_Accepted,
  SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'No' THEN ot_tracking.hours else 0 END) AS OT_Declind,
  SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Not Available - working or off' THEN ot_tracking.hours else 0 END) AS 'OT Unable to work',
  SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '202-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No' THEN ot_tracking.hours else 0 END) AS 'OT Offered',
  employee.Senority
FROM site
  INNER JOIN employee
    ON site.siteID = employee.siteID
  LEFT OUTER JOIN ot_tracking
    ON ot_tracking.employee_ID = employee.employee_ID
WHERE employee.siteID = 1
AND employee.Department <> 'shop' AND Department = 'Log Yard' AND LogLoader = 'Yes' AND Active = 'Yes'
GROUP BY ot_tracking.operator,
         employee.Senority,
         employee.Department
ORDER BY employee.Department, `OT Offered`, employee.Senority

ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No'括在括號內,因為運算符AND的優先級高於OR

SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND (ot_tracking.operatorResponse = 'Yes' OR ot_tracking.operatorResponse = 'No') THEN ot_tracking.hours else 0 END) AS `OT Offered`

或使用 IN:

SUM(CASE WHEN ot_tracking.shiftDate BETWEEN '2020-12-01' AND '2020-12-31' AND ot_tracking.operatorResponse IN ('Yes', 'No') THEN ot_tracking.hours else 0 END) AS `OT Offered`

'

暫無
暫無

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

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