Buduję zapytanie z GROUP BYklauzulą, która wymaga możliwości liczenia rekordów tylko na podstawie określonego warunku (np. Licz tylko rekordy, w których określona wartość kolumny jest równa 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
COUNTIF()Linia oczywiście nie powiedzie się, ponieważ nie ma natywna funkcja SQL nazywa COUNTIF, ale idea jest tu określenie procentu wszystkich wierszy, które mają wartość „1” dla MyColumn.
Czy są jakieś przemyślenia, jak poprawnie zaimplementować to w środowisku MS SQL 2005?
ISNULL, zamiast tego możesz zrobićCASE WHEN myColumn IS NULLlub użyćifnull( stackoverflow.com/a/799406/1861346 )