1

私はかなり単純に見えるものを持っていますが、ここに何かが欠けています。[ビジネス プロセス] の個別の値をすべて表示し、[是正措置が必要] = TRUE である [ビジネス プロセス] ごとのレコード数をカウントしようとしています。[Corrective Action Is Require] = TRUE の一部の [Business Process] 値のレコードがゼロである可能性があります。または値 > 0 である可能性があります。これは、私が使用している SQL です。

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 Required] のすべてのレコードで値 0 を示しています。誰かが私が正しくやっていないことを特定できますか?

4

3 に答える 3

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]

Group By がある場合、Order By は必要ありません。

于 2012-04-10T14:47:29.630 に答える
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]
于 2012-04-10T14:47:34.040 に答える
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];
于 2012-04-10T14:25:30.710 に答える