[解決済み] Oracle の行の複数の列でピボットを使用する
2022-03-08 18:32:32
質問
Oracleのテーブルに以下のようなサンプルデータが入っています(
tab1
) で、行を列に変換しようとしています。1 つの列に Oracle ピボットを使用する方法は知っています。しかし、それを複数の列に適用することは可能ですか?
サンプルデータです。
Type weight height
A 50 10
A 60 12
B 40 8
C 30 15
私の意図する出力。
A-count B-count C-count A-weight B-weight C-weight A-height B-height C-height
2 1 1 110 40 30 22 8 15
私にできること
with T AS
(select type, weight from tab1 )
select * from T
PIVOT (
count(type)
for type in (A, B, C, D,E,F)
)
上記のクエリで、以下のような結果が得られました。
A B C
2 1 1
を置き換えることができます。
count(*)
を
sum(weight)
または
sum(height)
を使用して、height または weight をピボットします。1 つのクエリで 3 つすべて (カウント、体重、身長) のピボットを実行することはできません。
ピボットを使ってできるのでしょうか?
どのように解決するのですか?
として ドキュメントでは のように、複数の集約関数節を持つことができます。だから、こんなことができる。
select * from (
select * from tab1
)
pivot (
count(type) as ct, sum(weight) as wt, sum(height) as ht
for type in ('A' as A, 'B' as B, 'C' as C)
);
A_CT A_WT A_HT B_CT B_WT B_HT C_CT C_WT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
2 110 22 1 40 8 1 30 15
もし、表示された順番でカラムを表示させたい場合は、もう一段サブクエリを追加してください。
select a_ct, b_ct, c_ct, a_wt, b_wt, c_wt, a_ht, b_ht, c_ht
from (
select * from (
select * from tab1
)
pivot (
count(type) as ct, sum(weight) as wt, sum(height) as ht
for type in ('A' as A, 'B' as B, 'C' as C)
)
);
A_CT B_CT C_CT A_WT B_WT C_WT A_HT B_HT C_HT
---- ---- ---- ---- ---- ---- ---- ---- ----
2 1 1 110 40 30 22 8 15
SQLフィドル .
関連
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み] ORA-01779: キーが保存されていないテーブルにマップされる列を変更できません。
-
[解決済み] Oracleでテーブルから重複した行を削除する
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] データフレームをピボットするにはどうしたらいいですか?
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み】使用されるSELECT文は列の数が異なる(REDUX!)
-
[解決済み】sys.dm_exec_sql_textはどのように機能するのでしょうか?
-
[解決済み] リンクされたサーバーの NULL に対して OLE DB プロバイダー Microsoft.Jet.OLEDB.4.0 のインスタンスを作成できません。
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)