• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスのSQL文の検索条件)

アクセスのSQL文の検索条件

このQ&Aのポイント
  • アクセスのSQL文の検索条件について教えてください。
  • 以下のデータから0を除外し、部門CDが1のみの人、2のみの人、1と2の両方がある人を抽出したいです。
  • WHERE条件としてどのようなSQL文を使用すれば良いでしょうか?INNER JOINやLEFT JOINを使用する方法も考えましたが、他にも方法があるか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

どんな出力結果があなたにとってベストなのかが分からないと・・・。 こんな方法もあるよ・・・という事で。 元テーブルの名前をテーブル1とします。(部門CDは数値型と仮定しています) 部門CDごとに社員名で連番をとります。 SQL文は SELECT [テーブル1].社員名, [テーブル1].部門CD, DCount("*","テーブル1","社員名<='" & [社員名] & "' and 部門CD=" & [部門CD]) AS 連番 FROM テーブル1; これをクエリ1とします。 クロス集計クエリをクエリ1を元に TRANSFORM IIf(IsNull(First([部門CD])),"","◎") AS 式1 SELECT [クエリ1].社員名, Count([クエリ1].連番) AS 兼任部門数 FROM クエリ1 WHERE ((([クエリ1].部門CD)<>0)) GROUP BY [クエリ1].社員名 PIVOT [クエリ1].部門CD;

bobby_jr
質問者

お礼

解説ありがとう御座いました。 上記のクエリをヒントに抽出条件に一致させることが出来ました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

SELECT DISTINCT "1:1のみの人" AS 区分, 社員名 FROM [テーブル1] WHERE (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=1 AND 社員名=[社員名])>0 AND (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=2 AND 社員名=[社員名])=0 UNION SELECT DISTINCT "2:2のみの人" AS 区分, 社員名 FROM [テーブル1] WHERE (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=1 AND 社員名=[社員名])=0 AND (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=2 AND 社員名=[社員名])>0 UNION SELECT DISTINCT "3:1と2の人" AS 区分, 社員名 FROM [テーブル1] WHERE (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=1 AND 社員名=[社員名])>0 AND (SELECT COUNT(*) FROM [テーブル1] WHERE 部門CD=2 AND 社員名=[社員名])>0; こんな感じです。思い付きで書いたので、もう少し簡略化できるかも知れません。

bobby_jr
質問者

お礼

何度も解説ありがとう御座いました。 クエリが複雑でややこしくなりそうでしたので、今回はこちらのクエリを採用しませんでした。 申し訳御座いません。

すると、全ての回答が全文表示されます。
回答No.2

Hosoku:抽出する順番は区分で指示できます。

すると、全ての回答が全文表示されます。
回答No.1

あんまり難しく考えないで・・・。 >部門CD 1のみの人 Bさん >部門CD 2のみの人 Cさん >部門CD 1と2両方ある人 AとEさんを抽出したいです。 それぞれをそのまんまSELECT文にしてUNIONで結合すると・・・。

bobby_jr
質問者

補足

ありがとう御座います。 さらに分からなくなりました。 もう少し詳しく教えて頂けないでしょうか。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A