0
列が表に存在しない場合は、列のデフォルト値を選択しようとしています。次のコードは、私の期待される出力を与えてくれないようです。誰かが私に上記のコード中の溶液またはエラーを提案することができますoracleに列が存在しない場合のデフォルト値を選択
CustomerID | Age
-----------|----
Cust01 | 0
Cust02 | 0
- :
SELECT CustomerID, (select case when exists (select *
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'Customers' and
column_name = 'Age'
)
then Age
else 0 as Age
end)
FROM (select * from Customers);
Age列がテーブルの結果には存在しないためには、として与えられるべきです。
あなたは、動的SQLを使用しなければならないでしょう。通常のSELECTは、存在しないカラムを参照することはできません。 –
私はOracleをよく知らないので、これを完全な答えとして掲示するつもりはないですが、ほぼすべてのDBシステムのように信じています。クエリのコンパイルでは、すべてのオブジェクト(ここでは列)が存在する必要がありますクエリの実行)。ダイナミックSQLはあなたの唯一の選択肢だと思います。 –
12cで新しいものでない限り、フラグシップOracleデータベースには「INFORMATION_SCHEMA」はありません。おそらくこれはMySQLにタグを付けることを意味しましたか?もしそうなら、 '[oracle]'タグは、オラクルの主力データベースを参照する質問にのみ使用されるべきであり、JavaやMySQLなどの他のオラクル製品には使用されないことに注意してください。 –