Obtener AVG ignorando los valores nulos o cero

¿Cómo puedo obtener elAVG de una columna ignorandoNULL y cero valores?

Tengo tres columnas para obtener su promedio, trato de usar el siguiente script:

SELECT distinct
     AVG(cast(ISNULL(a.SecurityW,0) as bigint)) as Average1
     ,AVG(cast(ISNULL(a.TransferW,0) as bigint)) as Average2
     ,AVG(cast(ISNULL(a.StaffW,0) as bigint)) as Average3
FROM Table1 a,  Table2 b
WHERE a.SecurityW <> 0 AND a.SecurityW IS NOT NULL
AND a.TransferW<> 0 AND a.TransferWIS NOT NULL
AND a.StaffW<> 0 AND a.StaffWIS NOT NULL
AND MONTH(a.ActualTime) = 4
AND YEAR(a.ActualTime) = 2013

No obtengo ningún resultado, sin embargo, las tres columnas tienen valores que incluyen NULL y ceros.

¿Hay alguna forma de excluir los valores nulos antes de obtener el promedio?

ejemplo:AVERAGE(NOTNULL(SecurityW))

Respuestas a la pregunta(5)

Su respuesta a la pregunta