プロが教える店舗&オフィスのセキュリティ対策術

Accessのクエリで実現可能か、わかりましたら教えてください。

 所属異動履歴というテーブルがあり、レコード内容は、ID・氏名と所属の異動履歴(異動日・所属)となります。所属の異動履歴(異動日・所属)は、異動日が昇順に並んでいます。
 実現したいことは、クエリで、この異動履歴(異動日・所属)を異動日の降順に並び替えすることです。

 クエリで実現することが不可能であれば、VBAで1レコードずつデータを並び替えるコードを作成するつもりでおりますが、もっと簡単にクエリ等で実現できるものか知りたいと思い質問させていただきました。よろしくお願いします。

-------------------------------------------------------
<処理イメージ>

・テーブル「所属異動履歴」

【現在の並び】
ID 氏名 異動日01 所属01 異動日02 所属02 異動日03 所属03 異動日04 所属04
1 aa aa 2010/4/1 A 2013/9/1 B 2019/4/1 C 2021/4/1 D
2 bb bb 2015/4/1 D 2018/4/1 A
2 cc cc 2012/4/1 C 2016/9/1 D 2021/4/1 E

【クエリで実現したい並び】
ID 氏名 異動日01 所属01 異動日02 所属02 異動日03 所属03 異動日04 所属04
1 aa aa 2021/4/1 D 2019/4/1 C 2013/9/1 B 2010/4/1 A
2 bb bb 2018/4/1 A 2015/4/1 D
2 cc cc 2021/4/1 E 2012/4/1 C 2016/9/1 D

質問者からの補足コメント

  • ※すみません。処理イメージデータの「ID」が一部間違っていました。
    【現在の並び】【クエリで実現したい並び】の3つ目の「ID」は、次のとおりです。
      2<誤> → 3<正>

      補足日時:2021/12/08 15:54
  • 早速のお答えありがとうございます。
     実は、質問ではテーブルのデータの並び替えをしたいとしたのですが、実際のデータは、ShowMeHow様がおっしゃるとおり、「ID」「氏名」「異動日」「所属」の形でデータを保持しています。
     利用者から処理イメージの【クエリで実現したい並び】のようなレイアウトのデータがほしいと依頼があり、【現在の並び】の形には、クロス集計クエリ等を使い作成できたのですが、これをクエリで逆順に並び替え【クエリで実現したい並び】のようなデータにすることができなかったため、質問させていただきました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/12/08 16:13
  • >要するに、下の並び順における01というのは固定でなく、移動のたびに変化するというのがめんどくさいポイントであるということですね。

    そうなんですよね。クエリでの実現はできないようなので、VBAで1レコードずつデータを並び替えるコードを作成して対応します。ありがとうございました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/12/10 09:46

A 回答 (2件)

>クロス集計クエリ等を使い


そのステップで、移動日の番号とレコードを紐づける行為をしているなら、昇順から降順に変えれば、クロス集計自体はそのままできるような気がする。

データ入力時に、移動日の番号を作っているなら、全部書き換えるしかないと思うけど、この場合も新しいレコードが発生する際に、その個人のレコードを全部書き換えるという(あまり望ましくない)行為が発生することになる。

要するに、下の並び順における01というのは固定でなく、移動のたびに変化するというのがめんどくさいポイントであるということですね。
この回答への補足あり
    • good
    • 0

わたしだったら、、、


ID 移動日 移動先部署 移動回数
みたいな形にテーブルを書き変え、
個別IDごとに縦にデータ表示させるかな。

結局、下の形でデータを作ったとしても、移動があるたびに
一個ずつずらして、新しいデータを入れるという手順を
書かなくてはいけない。

データベース上のデータの変更ってレコードを書き換えるのではなく、
新しいレコードを作っていくほうが間違いなどがなく、論理的。
この回答への補足あり
    • good
    • 1

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