- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL行列入れかえの方法を教えてください)
SQL行列入れ替えの方法とは?
このQ&Aのポイント
- SQLを使用して行列のデータを入れ替える方法を教えてください。現在、特定のテーブル(kingaku_futan_busho)のデータが以下のように表示されています。
- このデータを特定の形式に変更して表示したいです。具体的には、bushoの数が10を超えないように、IDと関連するbushoとpictの組み合わせを行ごとに並べ替え、pictの大きい順に並べたいです。
- 方法としては、SQLのソート機能を使用するか、Accessのクロス集計を利用する方法があります。当方の目的を達成するために最適な方法を教えていただけますか?
- みんなの回答 (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でもすきなほうで。
お礼
>jhayashiさん dense_rank()なんてあるんですね。 お陰さまで解決しました! どうもありがとうございました(^-^)