dポイントプレゼントキャンペーン実施中!

以下のように値が入っているテーブルで、
地域番号と区分が等しいレコードが2つ以上あり、かつ評価1と評価2のレコードが存在しているのは、このテーブルの中に幾つあるのか・・・というのが知りたいと考えています。
下のテーブルでは、1行目、2行目、5行目が地域番号と区分番号が等しく、かつ評価1と評価2の両方があるため、この場合は「1」という答えを取得できれば成功なのですが・・。

ID  地域番号 区分番号 評価
001 1000    100     1
002 1000    100     2
003 1001    101     1
004 1001    101     1
005 1000    100     1

どなたかご存知の方がいらっしゃいましたら、ご教授いただけないでしょうか。
よろしくお願いいたします。

A 回答 (3件)

30代の男です。


単純に考えて作成しました。

SELECT
 COUNT(A.[地域番号]) AS [該当件数]
FROM (
     SELECT [地域番号],[区分番号]
     FROM [テーブル1]
     WHERE [評価]="1"
     GROUP BY [地域番号],[区分番号]
     ) AS A
INNER JOIN (
     SELECT [地域番号],[区分番号]
     FROM [テーブル1]
     WHERE [評価]="2"
     GROUP BY [地域番号],[区分番号]
     ) AS B
ON A.[地域番号]=B.[地域番号]
AND A.[区分番号]=B.[区分番号]
説明ですが、
「AS A」前の括弧内でまず、「評価」が1である「地域番号」と「区分番号」を持つレコードを抽出
「AS B」前の括弧内で「評価」が2である「地域番号」と「区分番号」を持つレコードを抽出

これら二つの抽出データを「INNER JOIN」で結合すると、
「評価」が1と「評価」が2の両方にデータが存在する情報のみ抽出できる。
「評価」が1と「評価」が2の抽出条件の両方にデータが存在するという事は
2レコード以上存在していると見て問題ない。

よって、それらの結果に対してCOUNTしてあげれば、抽出したい件数が求めることができます。

なお、各行は途中のスペースが削除されないために「全角スペース」を入力しています。

実際のACCESSに複写する際に「半角スペース」に変更してください。
    • good
    • 0

select count(*)


from
(select distinct 地域番号,区分番号 from 下のテーブル
where 評価 = 1) TA,
(select distinct 地域番号,区分番号 from 下のテーブル
where 評価 = 2) TB
where TA.地域番号 = TB.地域番号
and TA.区分番号 = TB.区分番号
ではどうでしょう?
件数(地域番号,区分番号の種類の数になりますが)が多いと遅くなりますが、理解はしやすいかと。
    • good
    • 0

これではどうでしょうか?



SELECT COUNT (地域番号) FROM (SELECT 地域番号,区分番号 FROM (SELECT DISTINCT 地域番号,区分番号,評価 FROM 評価テーブル) GROUP BY 地域番号,区分番号 HAVING COUNT (評価)<>1);

入れ子にして書いただけなので、
もっとすっきりとした回答があると思いますが…
    • good
    • 0

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

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