Estou criando uma consulta com uma GROUP BY
cláusula que precisa da capacidade de contar registros com base apenas em uma determinada condição (por exemplo, contar apenas registros onde um determinado valor da coluna é 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
A COUNTIF()
linha obviamente falhar uma vez que não há nenhuma função SQL nativa chamada COUNTIF
, mas a idéia aqui é determinar a porcentagem de todas as linhas que têm o valor '1' para MyColumn.
Alguma idéia de como implementar isso corretamente em um ambiente MS SQL 2005?
ISNULL
, em vez disso, você pode fazerCASE WHEN myColumn IS NULL
ou usarifnull
( stackoverflow.com/a/799406/1861346 )