• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESSを活用して商品変動を追いたい(別続))

ACCESSを活用して商品変動を追いたい(別続)

このQ&Aのポイント
  • 質問者は、データベースのテーブルデータを使用して、商品の変動を追いたいと考えています。具体的には、受付日、氏名、電話番号、商品コード、商品名、数量、価格のデータを持つテーブルがあり、このデータを元に変動を抑えた表示を行いたいとのことです。質問者は、スイッチングをしていないデータを非表示にする方法について尋ねています。
  • 提供されたテーブルデータの例を元に、質問者の希望する表示を実現する方法について考えます。希望の表示は、前回からの変動だけを抑えたものであり、スイッチングをしていないデータは非表示にすることが目的です。
  • 質問者は、連続する後ろのデータが変動なしとして非表示にできるか尋ねています。ただし、1日の受付が複数の個数で、その個数が一致し、内容も一致したデータが連続する場合に限定されます。この場合、連続する後ろのデータは変動なしとして非表示にすることができます。

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

#2です 一応、補足が記述できるよう投稿しておきます。 有効に使ってください。 SQL の記述で、どこで何をやっている??? とか補足あれば説明します。 SQL を提示する時って、VBA の様に ' 以降はコメント・・・ってことはないと思うので、 コピペで使えるもの・・・これを重視しています。 なので、補足が無い限り説明しない様にしてみるかな・・・とも思っていたりします。 読んでわかる人ならそれはそれで・・・・ 何をやっている?・・・せっかく質問したんだから理解しておきたい・・・ なら、応援します。 (といっても、我流なので嘘をつくかも・・・また、もっと効率の良い方法があったりして・・・)

mcdone
質問者

お礼

とんでもないです。大変参考になりました!ありがとうございます。

その他の回答 (2)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です テーブル名を ★★ と仮定します ※ 変な所で折り返し表示になるかもしれませんが、メモ帳とかにコピーしてみてください。 ※ 記述の仕方はいろいろあると思いますけど・・・動いたみたいだったので SELECT T1.受付日, T1.受付日-T2.受付日 AS 切り替え, T1.氏名, T1.電話番号, T1.商品コード, T1.商品名, T1.数量, T1.価格 FROM (SELECT Q1.*,Q3.CT FROM (★★ AS Q1 INNER JOIN (SELECT DISTINCT Q12.電話番号 FROM (SELECT 電話番号, Count(*) AS CT FROM (SELECT DISTINCT 受付日, 電話番号 FROM ★★) AS Q11 GROUP BY 電話番号) AS Q12 INNER JOIN (SELECT 電話番号, Count(*) AS CT FROM ★★ GROUP BY 電話番号, 商品コード & 商品名) AS Q13 ON Q12.電話番号=Q13.電話番号 AND Q12.CT<>Q13.CT ) AS Q2 ON Q1.電話番号=Q2.電話番号) INNER JOIN (SELECT 受付日, 電話番号, Count(*) AS CT FROM ★★ GROUP BY 受付日, 電話番号) AS Q3 ON Q1.受付日=Q3.受付日 AND Q1.電話番号=Q3.電話番号 ) AS T1 LEFT JOIN (SELECT 受付日, 電話番号, Count(*) AS CT FROM ★★ GROUP BY 受付日, 電話番号) AS T2 ON T1.電話番号=T2.電話番号 AND T1.受付日>T2.受付日 WHERE T2.受付日 Is Null OR ( T2.受付日=(SELECT Max(受付日) FROM ★★ WHERE 電話番号=T1.電話番号 AND 受付日<T1.受付日) AND IIF(T1.CT<T2.CT, True, T1.商品コード & T1.商品名 Not In (SELECT 商品コード & 商品名 FROM ★★ WHERE 受付日=T2.受付日 AND 電話番号=T1.電話番号)) ) ORDER BY T1.電話番号, T1.氏名, T1.受付日; ※ 上記は、電話番号だけをキーにしたものになります。 氏名、電話番号をキーにしたものは考えてみてください。 無理なようなら・・・また、動作がおかしければ補足してください。

mcdone
質問者

お礼

早速にありがとうございます。試します。取り急ぎお礼まで。

mcdone
質問者

補足

受付日 切り替え 氏名 電話番号 商品コード 商品名 数量 価格 2014/04/01 山田花子 12345678 55555 魔法瓶 1 2980 2014/05/01 30 山田花子 12345678 33333 御茶碗 1 1280 2014/07/15 75 山田花子 12345678 22222 洗面器 1 980 ↑ 来ました!!!!!ありがとうございます!!!!! いろんなパターンで試行してみます。本当にありがとうございます。しかもSQL構文だけで実現できたわけですし。ビックデータでもいけるか動かしてみます。 また複数条件(氏名・電話番号)もみてみようとおもいます。 本当に感謝です。

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> 以下のようになりました。 結果として提示されたのは、 #3のものではなく、#4での結果ですよね。 #3であれば、 受付日 切り替え 氏名 電話番号 商品コード 商品名 数量 価格 2014/04/01   山田花子 12345678 55555 魔法瓶 1 2,980 2014/05/01 30 山田花子 12345678 33333 御茶碗 1 1,280 2014/07/15 75 山田花子 12345678 22222 洗面器 1 980 2014/09/12   鈴木次郎 89089089 11111 お箸  1 580 2014/09/12   鈴木次郎 89089089 22222 洗面器 1 980 2014/09/29 17 鈴木次郎 89089089 11111 お箸  1 580 2014/09/29 17 鈴木次郎 89089089 22222 洗面器 1 980 となったはずです。(私の環境ではそうです) 提示されたものが #4の結果だった場合、 > ↓↓↓ > >> から下の塊の記述は不要だったのでは? 条件・環境を後だしで変更することはしないで、最終形を提示してもらえませんか? (同一受付日に複数レコードがある・・・聞いて初めて分かった・・・) (複数レコード前後での、表示有無についても補足で初めて分かった・・・) (同一内容の複数レコード連続・・・考慮しきれていなかった事はありますが・・・) また、その都度つどの回答で xx するには・・・とか 回答した側としては、あまり気分の良いものではありません (最終形にもなっていないものが氾濫?) 補足をお願いしていいですか 提示されたサンプルで、希望の表示にさえなれば良いですか? 方法は問いませんか? また、電話番号だけをキーにしたものが良いですか? ※ 電話番号だけをキーとして、サンプルで確認できた一応動くものはありますが・・・  それが使いものになるのかは分かりませんけど(データ量の増減とか・・・)

mcdone
質問者

補足

失礼しました!!!!! こちら以下の通り私の方も表示されています。 > #3であれば、 受付日 切り替え 氏名 電話番号 商品コード 商品名 数量 価格 2014/04/01   山田花子 12345678 55555 魔法瓶 1 2,980 2014/05/01 30 山田花子 12345678 33333 御茶碗 1 1,280 2014/07/15 75 山田花子 12345678 22222 洗面器 1 980 2014/09/12   鈴木次郎 89089089 11111 お箸  1 580 2014/09/12   鈴木次郎 89089089 22222 洗面器 1 980 2014/09/29 17 鈴木次郎 89089089 11111 お箸  1 580 2014/09/29 17 鈴木次郎 89089089 22222 洗面器 1 980 30246kiku様、 整理します。 1.(同一受付日に複数レコードがある・・・聞いて初めて分かった・・・) >ございます 2.(同一内容の複数レコード連続・・・考慮しきれていなかった事はありますが・・・) >ございます 3.提示されたサンプルで、希望の表示にさえなれば良いですか? >はい 4.方法は問いませんか? >はい 5.※ 電話番号だけをキーとして、サンプルで確認できた一応動くものはありますが・・・  >電話番号をKEYにする、と電話番号&氏名をKEYにするの2つで比較したいです。 最終形: #3に対してさらに上記(No1~5)を考慮したい (ex:この場合、鈴木次郎は変動していないので表示しない)。 上記が最終形です。丁寧に回答いただき本当に恐縮です。

関連するQ&A