• 締切済み

一定回数以上の入金データの明細を表示する

Microsoft SQL Server Management Studio 2008 にて、クエリを作成しています。 下記の入金テーブルがあります。 入金日  顧客ID  入金額 2012/2/1  0010 10000 2012/2/2 0010 10000 2012/2/3  0010 10000 2012/2/4  0010 10000 2012/2/5  0020 10000 2012/2/6  0020 10000 2012/2/7  0020 10000 2012/2/8  0030 10000 2012/2/9  0030 10000 このテーブルから1か月単位で3回以上の入金をした顧客の 明細(上記3項目)を表示したいのです。 上記の例だと、実現したい結果は下記となります。 入金日  顧客ID  入金額 2012/2/1  0010 10000 2012/2/2 0010 10000 2012/2/3  0010 10000 2012/2/4  0010 10000 2012/2/5  0020 10000 2012/2/6  0020 10000 2012/2/7  0020 10000 とりあえず、入金回数別の入金件数だけを出すクエリは成功しました。 SELECT cnt, count(*) from (select 入金テーブル.顧客ID,COUNT(*)cnt FROM 入金テーブル WHERE 入金テーブル.入金日 >= '2012-02-01 00:00:00.000' AND 入金テーブル.入金日 <= '2012-02-29 23:59:59.000' group by 入金テーブル.入金日) aaa group by cnt order by cnt しかし、 1. 明細を出すところ 2. 3回以上の入金という条件指定ができない 上記2点でつまづいています。 どなたかご教示いただけると、大変助かります。 夜も眠れません。。。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

集計関数で検索するときは HAVING を使います。 > 3回以上の入金という条件指定ができない SELECT 顧客ID, COUNT(*) FROM 入金テーブル GROUP BY 顧客ID HAVING COUNT(*) >= 3 > 明細を出すところ SELECT * FROM 入金テーブル a WHERE EXISTS(SELECT 1 FROM 入金テーブル WHERE 顧客ID = a.顧客ID HAVING COUNT(*) >= 3)

rko910
質問者

補足

お返事が遅くなり、申し訳ございません。 こちらの書き方が悪かったのですが、   1.ある一定回数以上(たとえば3回)の入金をした   2.入金詳細データ を同時に実現したいのです。 SELECT句で詳細データを出すためワイルドカードを使用し、 (SELECT * ~) なおかつ、WHERE句もしくはHAVING句でCount関数を用いて件数の指定(件数の条件指定) することはできませんか?

関連するQ&A