2012-04-10 7 views
1

У меня есть то, что кажется довольно простым, но здесь что-то не хватает. Я пытаюсь отобразить все различные значения [Бизнес-процесс] и подсчитывать количество записей для каждого [Бизнес-процесса], в котором [Требуется коррективное действие] = ИСТИНА. Там может быть потенциально нулевой записи для некоторых [бизнес-процесса] значения, которые имеют [Корректирующее действие Требовать] = TRUE, или не может быть значения> 0. Это SQL, который я использую:MS Access SQL - количество записей = TRUE

SELECT [Business Process], sum([Corrective Action Is Required]) as [Total Corrective Action Is Required] 

FROM [Review Results] 

WHERE [Corrective Action is Required] in 

(select IIF([Corrective Action Is Required] = TRUE, 1, 0) from [Review Results]) 

GROUP BY [Business Process] 

ORDER BY [Business Process]; 

В настоящее время SQL показывает значение 0 во всех записях для [Требуется полное корректирующее действие]. Может ли кто-нибудь указать, что я делаю неправильно?

+0

удивительная, имеет смысл – JT2013

ответ

0

Не было бы проще сделать это ?, также не забудьте проверить ваши базовые данные.

SELECT [Business Process], count([Corrective Action Is Required]) as [Total Corrective Action Is Required] 
FROM [Review Results] 
WHERE [Corrective Action Is Required] = 1 
GROUP BY [Business Process] 
ORDER BY [Business Process]; 
+0

проблема с приведенным выше утверждением, что она не отобразить ВСЕ уникальные значения [Бизнес-процесс]. В вашем заявлении отображается только рука, заполненная значениями [Бизнес-процесс], для которых требуется [Корректирующее действие] = ИСТИНА. – JT2013

3

В Access, True = -1 и значение False = 0, так как насчет:

SELECT [Business Process], 
     Sum(Abs([Corrective Action Is Required])) 
      as [Total Corrective Action Is Required] 
FROM [Review Results] 
GROUP BY [Business Process] 

Вам не нужно Order By когда вы Group By.

1

Вы можете подвести логические, но в доступе вы получите отрицательные результаты, правда = -1 - так это должно работать

SELECT [Business Process], sum(iif([Corrective Action Is Required] = TRUE, 1, 0)) as [Total Corrective Action Is Required] 
FROM [Review Results] 
GROUP BY [Business Process] 
ORDER BY [Business Process] 
+1

Это Access, вы можете суммировать логическое значение, yes = -1, no = 0. См. Мой ответ на этот вопрос. – Fionnuala

+0

@Remou и DJ. оба ваших метода ребята работали – JT2013

Смежные вопросы