NULL
पहले ही अनदेखा कर दिया गया है ताकि आप NULLIF
का उपयोग कर सकें 0
. को चालू करने के लिए करने के लिए NULL
. इसके अलावा आपको DISTINCT
. की आवश्यकता नहीं है और आपका WHERE
पर ActualTime
सारगर्भित नहीं है।
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'
पीएस मुझे नहीं पता कि Table2 b
. क्या है मूल प्रश्न में है क्योंकि इसमें शामिल होने की कोई शर्त नहीं है इसलिए इसे मेरे उत्तर से हटा दिया गया है।