2016-05-05 6 views
0
Date  Name Charge 
1/15/2015 Alpha 0 
2/15/2015 Alpha 0 
2/15/2015 Beta 0 
2/15/2015 Gamma 2 
3/15/2015 Gamma 3 
3/15/2015 Alpha 5 
4/15/2015 Beta 0 

上記はAccessのサンプルテーブルです。私の意図は、厳密には「Charge」の値が0であるすべての一意の名前を取得することですが、名前にゼロ以外の値がある場合、クエリは名前をまったく返しません。 たとえば、サンプルデータに基づいて、正しく書き込まれたクエリは「ベータ」のみを表示します。Access - すべてのレコードのVBA - SQLクエリ

上記の要件のためにSQLクエリを作成するにはどうすればよいですか?感謝しています - ありがとう!

+0

:代わりに入力として日付&終了日をスタート入力をユーザーに要求しています。 SQLクエリはどのように書かれますか?私はSUMがこの要求に対して機能しないことに気付き、利用可能な機能の数に制限があります。 – stitch70

答えて

2

あなたはGROUP BYHAVINGとともにSUMを使用することができます。

SELECT Name 
FROM tbl 
GROUP BY Name 
HAVING SUM(Charge) = 0 

ONLINE DEMO

+0

フェリックス - これは素晴らしいことです...ありがとうございますが、より柔軟なコードを記述することができますか?たとえば、2015年5月15日が一定の値で、ユーザーが「2」と入力した場合、クエリは厳密に2ヶ月前の3/15/15以降のデータにのみ適用されます。または、ユーザーが「3」を入力した場合、クエリは厳密に3ヶ月前の2/15/15以降のデータにのみ適用されます。 – stitch70

+0

フォローアップでは、HAVING基準に2つの条件を含める簡単な方法はありますか?私はSum(Charge)= 0とSum(Charge)= 5を探しています。 – stitch70

+0

私はこれを0の代わりに、私は厳密に3.39に等しい料金を探しています。 SQLクエリはどのように書かれますか?私はSUMがこの要求に対して機能しないことに気付き、利用可能な機能の数に制限があります。 – stitch70

0

私は私が実際に自分の質問には、このこと(下)ソリューションを持っているかもしれないと思います。 0の代わりに、私は3.39と厳密に等しい料金を探していますどこ私はこれを更新しています

PARAMETERS [Start Date] DateTime, [End Date] DateTime; 
SELECT tbl.Name 
FROM tbl 
WHERE ([tbl].[Date]>=[Start Date] And [tbl].[Date]<=[End Date]) 
GROUP BY tbl.Name 
HAVING SUM(Charge) = 0; 
+0

私はこの代わりに0の代わりに、私は厳密に3.39に等しい料金を探しています。 SQLクエリはどのように書かれますか?私はSUMがこの要求に対して機能しないことに気付き、利用可能な機能の数に制限があります。 – stitch70

関連する問題