質問: access同一日付内の特定レコード抽出 access初級者です。 例えば以下のテーブルがあります。 日付 住所 氏名 配送費 2/1 東京品川区 a商店 2000 2/2 東京大田区 b商店 1500 2/2 東京大田区 c商店 1500 2/2 東京江東区 d商店 2500 2/3 東京新宿区 f商店 1000 2/3 東京大田区 c商店 1500 住所が大田区であれば別途料金を自動計算させたいと思います。 但し、同一日付内で大田区が何件あったとしても大田区全体での別途料金となることから 1レコードのみに別途料金を付加させたいのです。 上記例の場合には、2/2に2件の大田区(b・c商店)があるので、いずれかに別途料金を 追加したいのです。2/3の場合は1件しかないので簡単なクエリで計算できます。 当然、2/1は該当がないのでゼロとなります。 まず大田区のみを抽出し、日付の比較を行う等の複雑なコーディングがいるのでしょうか。 難しく考えすぎなのでしょうか。 アドバイスをお願い出来ればと思います。
回答: #1です その後、解決に向かっているのでしょうか。 #1では 1)クエリ「q2」を作っておく方法 2)1)をサブクエリとして展開する方法 3)別途料金を分配する方法 4)一意に特定できるフィールドを使う方法 の4つを回答してみました。 上記1)~4)は、提示されたサンプルで動作すると思いますが、 実際のデータでは、どうなっているでしょうか。 1)2)であれば問題ないと思いますが、例えば、住所が微妙に異なる以下の様な場合 日付 住所 氏名 配送費 2/1 東京品川区 a商店 2000 2/2 東京大田区★ b商店 1500 2/2 東京大田区▲ c商店 1500 2/2 東京江東区 d商店 2500 2/3 東京新宿区 f商店 1000 2/3 東京大田区 c商店 1500 3)4)は意図した動きになっていないと思います。 以下の様な結果になっているかと思います。 日付 住所 氏名 配送費 別途料金 2/1 東京品川区 a商店 2000 2/2 東京大田区★ b商店 1500 1500 2/2 東京大田区▲ c商店 1500 1500 2/2 東京江東区 d商店 2500 2/3 東京新宿区 f商店 1000 2/3 東京大田区 c商店 1500 1500 これは、サブクエリ内の group by 指定を、日付, 住所 にしているため 「東京大田区★」と「東京大田区▲」は違うものとして扱われます。 4)の場合、group by から 住所 を削除することで動くと思いますが、 3)の場合は削除するだけでは意図した動きにはなりません。 やりたいことは、1)2)及び修正の4)でできているとは思います。 3)が必要であれば、解決に向けての進捗等補足ください。 (実際の住所はどんな感じになっているのかも併せて頂ければ・・・) なお、4)は、1)2)と異なり、同一日付内に同一氏名があっても大丈夫なはずです。