Estoy creando una consulta con una GROUP BY
cláusula que necesita la capacidad de contar registros basados solo en una determinada condición (por ejemplo, contar solo registros donde un determinado valor de columna es igual a 1).
SELECT UID,
COUNT(UID) AS TotalRecords,
SUM(ContractDollars) AS ContractDollars,
(COUNTIF(MyColumn, 1) / COUNT(UID) * 100) -- Get the average of all records that are 1
FROM dbo.AD_CurrentView
GROUP BY UID
HAVING SUM(ContractDollars) >= 500000
La COUNTIF()
línea obviamente falla ya que no se llama a una función SQL nativa COUNTIF
, pero la idea aquí es determinar el porcentaje de todas las filas que tienen el valor '1' para MyColumn.
¿Alguna idea sobre cómo implementar esto correctamente en un entorno MS SQL 2005?
ISNULL
, en cambio puede hacerCASE WHEN myColumn IS NULL
o usarifnull
( stackoverflow.com/a/799406/1861346 )