Postgresqlの手続き言語の使用方法について質問です。
以下のようなあるシンプルなクエリにBoolの入力値を元にソート条件が変わるように組みたいのですが、そのフラグによって第二ソート条件まで変えるような書き方がわからないので教えていただきたいです。
上記のような動作にしたいのは、where句内の条件やselectの中身などは共通で使用したいからです。
Postgresql
1BEGIN 2 RETURN QUERY 3 SELECT 4 * 5 WHERE 6 some_table as t1 7 OFFSET 0 8 LIMIT 20 9 ; 10 11END; 12$FUNCTION$ LANGUAGE plpgsql; 13
尚、以下のコードは文法的にはエラーになるのですが、ロジック的にはORDER BY以下のCASE文のような形でクエリを出したいです。
よろしくお願い致します。
Postgresql
1DECLARE 2 w_flag BOOLEAN := FALSE; 3BEGIN 4RETURN QUERY 5 SELECT 6 * 7 WHERE 8 some_table as t1 9 ORDER BY 10 CASE WHEN w_flag THEN t1.id ASC, t1.name DESC 11 ELSE 12 t1.name DESC, t1.name DESC 13 END 14 OFFSET 0 15 LIMIT 20 16; 17 18END; 19$FUNCTION$ LANGUAGE plpgsql; 20

回答2件
あなたの回答
tips
プレビュー