2012-04-10 14 views
1

私はかなりシンプルに思えますが、ここで何か不足しています。私はすべての[ビジネスプロセス]値を表示し、[是正措置が必要]の各ビジネスプロセスのレコード数をTRUEにカウントしようとしています。そこ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は、[Total Corrective Action Is Is Required]のすべてのレコードで0の値を示しています。誰かが私が正しくやっていないことを指摘できますか?

+0

素晴らしいが動作するはずです、理にかなって – JT2013

答えて

0

これを行う方が簡単ではないでしょうか?基礎データを確認することも忘れないでください。

Accessで
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

上記の文の問題は、それがないということですすべての固有の[ビジネスプロセス]値を表示します。あなたは、[是正措置が必要] = TRUEである[ビジネスプロセス]値で満たされた手のみを表示するステートメントです。 – JT2013

3

、真= -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を必要としません。

1

あなたはブール値を合計することができますがアクセスであなたをTrue = -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

これはアクセスです。ブール値yes = -1、no = 0を合計することができます。この質問に対する私の応答を見てください。 – Fionnuala

+0

@RemouとDJ。両方のあなたの人の方法が働いた – JT2013