2016-07-06 5 views
2

я должен рассчитывать случаи каждого офицера, где Survey = 'а' и активность = 'FI' и (результат = 'C' или результат = 'D')Как написать счет, если группа офицером?

Вот мой полный SQL

SELECT officer, NULL, 
    SUM(IIF(ISNUMERIC(mkt) = TRUE AND Survey='dasda' AND Activity='FI' AND Outcome = 'C', Totalmin, 0)/60), 
    SUM(Non), SUM(ICC), NULL, NULL, NULL, COUNT(IIF(Survey='abc' AND Activity='FI' AND (Outcome='C'or Outcome='D'), Totalmin, 0)) 
FROM [DB$] 
GROUP BY officer " ' 

Проблематика часть

Count(IIF( Survey='abc' and Activity='FI' and (Outcome='C'or Outcome='D'), Totalmin, 0)) 

Тем не менее, за результат, что я генерируемой не работает. Результат подсчета намного больше, чем ответ.

+0

Пожалуйста, покажите нам образец ввода и вывода. –

ответ

1

COUNT() подсчитывает количество не NULL значений. Поскольку 0 не является нулевым, он подсчитывается. Здесь два варианта:

COUNT(IIF(Survey='abc' AND Activity='FI' AND Outcome IN ('C', 'D'), Totalmin, NULL)) 

или

SUM(IIF(Survey='abc' AND Activity='FI' AND Outcome IN ('C', 'D') AND Totalmin IS NOT NULL, 1, 0)) 
+0

Я проверил для count(), он работает – Vito

+0

Но в моем восприятии, count() учитывает только (IIF) истинный случай. Следовательно, count() не должен учитывать (IIF) ложный случай (0). Разве нет? – Vito

+0

@Vito. , , Ваше восприятие неверно. 'COUNT()' подсчитывает количество значений, отличных от 'NULL', независимо от того, существует ли выражение' IIF() '. –