NULL
đã bị bỏ qua nên bạn có thể sử dụng NULLIF
để chuyển 0
thành NULL
. Ngoài ra, bạn không cần DISTINCT
và WHERE
của bạn trên ActualTime
không thể phân biệt được.
SELECT AVG(cast(NULLIF(a.SecurityW, 0) AS BIGINT)) AS Average1,
AVG(cast(NULLIF(a.TransferW, 0) AS BIGINT)) AS Average2,
AVG(cast(NULLIF(a.StaffW, 0) AS BIGINT)) AS Average3
FROM Table1 a
WHERE a.ActualTime >= '20130401'
AND a.ActualTime < '20130501'
Tái bút Tôi không biết Table2 b
gì nằm trong truy vấn ban đầu vì không có điều kiện kết hợp cho nó, vì vậy tôi đã bỏ qua nó khỏi câu trả lời của tôi.