NULL
wird bereits ignoriert, sodass Sie NULLIF
verwenden können um 0
zu drehen auf NULL
. Außerdem brauchen Sie DISTINCT
nicht und Ihr WHERE
auf ActualTime
ist nicht sargfähig.
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'
PS Ich habe keine Ahnung, was Table2 b
ist ist in der ursprünglichen Abfrage für, da es keine Join-Bedingung dafür gibt, also habe ich sie aus meiner Antwort weggelassen.