
PostgreSQLでテーブルのデータを下記のように値の小さい順に変えたい場合、
どのようなクエリで可能か教えていただけますでしょうか。
table_before
--------------------------------------------------------
column_a | column_b | column_c | column_d
--------------------------------------------------------
hoge | 1 | 5| 3
--------------------------------------------------------
hogehoge | 12 | 2| 6
--------------------------------------------------------
.
.
.
--------------------------------------------------------
hogelast | 8 | 5| 5
--------------------------------------------------------
↓
table_after
--------------------------------------------------------
column_a | column_e | column_f | column_g
--------------------------------------------------------
hoge | 1 | 3| 5
--------------------------------------------------------
hogehoge | 2 | 6| 12
--------------------------------------------------------
.
.
.
--------------------------------------------------------
hogelast | 5 | 5| 8
--------------------------------------------------------
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
なぜ、そのような扱いにくいテーブル設計にするのか理解に苦しみますが。
WITH
cte AS (
SELECT
clm_a
,clm
,ROW_NUMBER() OVER(PARTITION BY clm_a ORDER BY clm) AS rn
FROM(
SELECT clm_a,clm_b AS clm FROM tbl_b
UNION ALL
SELECT clm_a,clm_c FROM tbl_b
UNION ALL
SELECT clm_a,clm_d FROM tbl_b
) AS x
)
SELECT
clm_a
,(SELECT clm FROM cte
WHERE clm_a=tbl_A.clm_a AND rn=1) AS clm_e
,(SELECT clm FROM cte
WHERE clm_a=tbl_A.clm_a AND rn=2) AS clm_f
,(SELECT clm FROM cte
WHERE clm_a=tbl_A.clm_a AND rn=3) AS clm_g
FROM tbl_b AS tbl_A
ORDER BY clm_a
;
回答有難うございます。
b,c,dの値で一番小さいものが1、且つ2番目に小さいものが4~5、且つ、一番大きいものが6~8の時
といった形で幾つかのパターンでデータを出したいのですが、
where句でそういった条件の抽出を行う関数が浮かばず、
小さい順にカラムを並び替えれば
where
column_e = 1
and
column_f >= 4
and
column_f <= 5
and
column_g >= 6
and
column_g <= 8
といった形で扱いやすいかと思ったのですが、
今度はそのテーブルを作る関数がわからず、このような形で質問しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
システムテーブルについての疑問
-
「マスタ」と「テーブル」の違...
-
オラクルではできるのにSQLSERV...
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
SELECT時の行ロックの必要性に...
-
インデックスの再構築の意味っ...
-
SELECT文でのデッドロックに対...
-
ACCESS2007 フォーム 「バリア...
-
SQL Server のデータをCSVファ...
-
accessのエクスポートエラーに...
-
SELECT文でタイムアウト...
-
SI Object Browserのテーブルス...
-
Access 削除クエリが重い
-
ACCESSのODBCリンクテーブルに...
-
Access VBA Me.Requery レコー...
-
sqlserverで集計結果をUPDATEし...
-
排他ロックしたレコードが、別...
-
SQLデータ修正時に『このレコー...
-
Access VBA [リモートサーバー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLServerでテーブルの列数を求...
-
SQLManagementStudioのフィルタ
-
システムテーブルについての疑問
-
PostgreSQLで外部DB内のテーブ...
-
主キーの取得
-
テーブル定義(Foreign Key)の...
-
照合順序の変更について
-
ポスグレ レコードの比較
-
SQLサーバーとMySQLの大きな違...
-
【PostgreSQL】行の値の並びを...
-
「マスタ」と「テーブル」の違...
-
3つ以上のテーブルをUNIONする...
-
ACCESSのSQLで、NULLかNULLでな...
-
ACCESS2007 フォーム 「バリア...
-
SELECT文でのデッドロックに対...
-
オラクルではできるのにSQLSERV...
-
SI Object Browserのテーブルス...
-
Accessにインポートしたら並び...
-
Access VBA [リモートサーバー...
-
SQL Server のデータをCSVファ...
おすすめ情報