ショボ短歌会

お世話になります。

Access2003を利用しておりますが、一つのクエリで以下の算出(抽出?)は可能でしょうか。

検品テーブル
 ・ID
 ・ライン
 ・グループ

 ID ライン グループ
 1  L1    G1
 2  L1    G1
 3  L1    G2
 4  L1    G2
 5  L1    G2
 6  L2    G3
 7  L2    G3
 8  L3    G4
 9  L3    G4
 10  L3    G4
 11  L3    G4
 12  L3    G5
 13  L3    G5
 14  L3    G6
 15  L4    G7


結果として、一つのラインでのグループ数の最大値(上記の例だとL3はグループが3つあるので3)を一つのクエリで算出したいと考えております。
以下のように3つのクエリを作成すれば結果は得られるのですが、できれば一つのクエリでやりたいところです。

 (1)検品テーブルを、[ライン]と[グループ]でグループ化

   L1 G1
   L1 G2
   L2 G3
   L3 G4
   L3 G5
   L3 G6
   L4 G7


 (2)上記クエリをグループ化し[グループ]をカウント

   L1 2
   L2 1
   L3 3
   L4 1

 (3)上記クエリでグループカウントの最大値

     3

この最大値3を算出するのを一つのクエリで行いたいのですが、可能でしょうか。
ご教授お願い致します。

A 回答 (2件)

MS-Access 2000での例。

「Access2003一つのクエリで結果を」の回答画像2
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
早速教えて頂いたSQLを元に試してみたところうまくいきました。

ありがとうございました。

お礼日時:2012/10/12 09:52

サブクエリを使えばできます。


SELECT TOP 1 COUNT(A.グループ) AS C
FROM (SELECT A.ライン,A.グループ
FROM 検品テーブル AS A
GROUP BY A.ライン,A.グループ) AS A
GROUP BY A.ライン
ORDER BY COUNT(A.グループ) DESC
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
勉強不足ですみません。

上記例で、L1でもグループが3つ存在した場合、結果は1レコード抽出されますでしょうか。

実際には他にも抽出条件があり、それを踏まえて教えて頂いたSQLを試したころ3が2レコード抽出されてしまいます。
単純に私の構文に間違いがあるのかもしれませんが。。

ありがとうございました。

お礼日時:2012/10/12 11:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す