• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL行列入れかえの方法を教えてください)

SQL行列入れ替えの方法とは?

このQ&Aのポイント
  • SQLを使用して行列のデータを入れ替える方法を教えてください。現在、特定のテーブル(kingaku_futan_busho)のデータが以下のように表示されています。
  • このデータを特定の形式に変更して表示したいです。具体的には、bushoの数が10を超えないように、IDと関連するbushoとpictの組み合わせを行ごとに並べ替え、pictの大きい順に並べたいです。
  • 方法としては、SQLのソート機能を使用するか、Accessのクロス集計を利用する方法があります。当方の目的を達成するために最適な方法を教えていただけますか?

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

  • ベストアンサー
  • jhayashi
  • ベストアンサー率29% (535/1843)
回答No.1

rank()を使って番号つけたのをカラムごとにピックアップ。 select aaa.id, max(decode(aaa.rank ,1,aaa.busho)), max(decode(aaa.rank ,1,aaa.pict)), max(decode(aaa.rank ,2,aaa.busho)), max(decode(aaa.rank ,2,aaa.pict)), max(decode(aaa.rank ,3,aaa.busho)), max(decode(aaa.rank ,3,aaa.pict)) *****4個目以降も繰り返し******* from ( select kingaku_futan_busho.id,kingaku_futan_busho.busho,kingaku_futan_busho.pict, dense_rank() over( partition by kingaku_futan_busho.id order by kingaku_futan_busho.pict desc,kingaku_futan_busho.busho) rank from kingaku_futan_busho ) aaa group by aaa.id; こんなんでどうでしょ。 11個目以降の部署を2行目とかあれば rankを割り算の整数部をgroupに入れ 余りmod()でdecode decodeでもcaseでもすきなほうで。

diz108
質問者

お礼

>jhayashiさん dense_rank()なんてあるんですね。 お陰さまで解決しました! どうもありがとうございました(^-^)

関連するQ&A