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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 何故割り算なのでしょうか? 6 2022/11/09 13:30
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Oracle データベースのカラムの型がCHAR型の場合で 値にシングルコーテーションつけなくても動作する場合と数 3 2022/04/25 12:00
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) Excel 、この式はどのように解釈すればいいのでしょうか 4 2023/02/03 08:53
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) substitute関数についての質問です 3 2023/06/21 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQLで外部DB内のテーブ...
-
照合順序の変更について
-
SQLManagementStudioのフィルタ
-
SQLServerでテーブルの列数を求...
-
SQLサーバーとMySQLの大きな違...
-
【PostgreSQL】行の値の並びを...
-
「マスタ」と「テーブル」の違...
-
ACCESSのSQLで、NULLかNULLでな...
-
2つのテーブルから条件に一致...
-
3つ以上のテーブルをUNIONする...
-
重複するキーから一番古い年月...
-
[ BETWEEN ] vs [ >= AND <= ]
-
ACCESS 一番最新の日付の金額...
-
ACCESS2007 フォーム 「バリア...
-
Access VBA Me.Requery レコー...
-
accessテーブル作成クエリを実...
-
accessのロック
-
ManagementStudioからのデータ削除
-
Accessのリンクテーブルについて
-
オラクルではできるのにSQLSERV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLで外部DB内のテーブ...
-
SQLServerでテーブルの列数を求...
-
【PostgreSQL】行の値の並びを...
-
主キーの取得
-
SQLManagementStudioのフィルタ
-
[PostgreSQL]別DBのテーブルのS...
-
SQLサーバーとMySQLの大きな違...
-
システムテーブルについての疑問
-
照合順序の変更について
-
「マスタ」と「テーブル」の違...
-
[ BETWEEN ] vs [ >= AND <= ]
-
2つのテーブルから条件に一致...
-
ACCESSのSQLで、NULLかNULLでな...
-
オラクルではできるのにSQLSERV...
-
SELECT時の行ロックの必要性に...
-
3つ以上のテーブルをUNIONする...
-
SELECT文でのデッドロックに対...
-
2つの項目が重複するレコード...
-
Access VBA [リモートサーバー...
-
数百万件レコードのdelete
おすすめ情報