関数の中では、SELECT
式の中に非常に長い列のリストがあります。select_list内の条件:一部の列のみを取ります
この関数は、フロントエンドからさまざまな時点で呼び出されます。しかし、2つのケースがあります。あるケースでは、その関数リストがSELECTリストにすべての列を持つようにしたいと思います。別のものでは私はその半分しか持ちたいと思っていない。フェッチする列は、フロントエンドに設定された関数パラメータwithAdditionalStuff
によって決まります。もちろん
、両方のケースでは、列はすべての行で同じです。
withAdditionalStuff = false
は意味:、withAdditionalStuff = true
はそれがcolumnAを返すべきである意味、すべての行に対してcolumnA、columnB、columnC ...を返しますcolumnB、columnC、columnD、columnE、columnF ...すべての行。
だから、何私が必要となることは、このようなものです:
SELECT many_columns_here ..... IF `withAdditionalStuff` = TRUE
THEN many_many_other_columns_here... END IF; FROM....
しかし、それは動作しません。
しかし、CASE 'withAdditionalStuff' = TRUE THEN some_column END AS some_column
内のすべての列をラップすると、もちろん列を完全に省略するのではなく、PostgreSQLは常に列some_column
を返します。したがって、関数の設定をwithAdditionalStuff
にすると、空の列がたくさんあります。それに加えて、CASE WHEN
の中に数十の列タイトルをラップするのは非常に面倒です。
SELECT
リスト内に、どの列を取得して完全に省略するかを決定する方法がありますか?
この関数は、結果をjsonbとして返します。
私はPostgreSQL 9.4.4を使用しています。
達成したいことはわかりません。行ごとに異なる数の列が必要な場合は、それは不可能です。あなたの質問を編集して、そのデータに基づいてサンプルデータと予想される出力を加えてください。 (_formatted_ text please、[スクリーンショットなし](http://meta.stackoverflow.com/questions/285551/why-may-i-not-upload-images-of-code-on-so-when-asking-a-質問/ 285557#285557)) –
私は文言を変更しました。データの内容が関係ないため、ここではサンプルデータが大いに役立つとは思いません。 – cis
なぜあなたは単に2つのビューを作成しないのですか? 1つはすべての列で、もう1つは必要な列だけです。 –