NULL
wordt al genegeerd, dus u kunt NULLIF
. gebruiken om 0
te veranderen naar NULL
. Ook heb je DISTINCT
. niet nodig en je WHERE
op ActualTime
is niet sargable.
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 Ik heb geen idee wat Table2 b
is in de oorspronkelijke vraag omdat er geen lidmaatschapsvoorwaarde voor is, dus heb het weggelaten uit mijn antwoord.