Sto costruendo una query con una clausola GROUP BY
che richiede la possibilità di contare i record basati solo su una determinata condizione (ad esempio conteggio solo record in cui un determinato valore di colonna è uguale a 1).Equivalente Sql Server di una funzione aggregata COUNTIF
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 linea COUNTIF()
ovviamente fallisce poiché non v'è alcuna funzione SQL nativo chiamato COUNTIF
, ma l'idea è quella di determinare la percentuale di tutte le righe che hanno il valore '1' per MyColumn.
Qualche idea su come implementarlo correttamente in un ambiente MS SQL 2005?
(So che l'OP ha richiesto MS SQL, ma solo un piccolo commento per gli utenti SQLite che fanno la stessa cosa) SQLite non ha 'ISNULL', invece si può fare' CASE WHEN myColumn IS NULL', o usare 'ifnull' (https://stackoverflow.com/a/799406/1861346) – Matt