行が見つからない場合、oracle sqlでデフォルト行を戻すことは可能ですか? フェッチされた行をフラットなasciiファイルに入れるプロセスがあります。 今私は、SQLクエリによってフェッチされた行がない場合、asciiファイルにデフォルト行があるはずです。SQLでデフォルトの行を返します
クエリでフェッチされた行がない場合、sqlでデフォルトの行を出力することができます。 注:pl/sqlを使用したくありません。
行が見つからない場合、oracle sqlでデフォルト行を戻すことは可能ですか? フェッチされた行をフラットなasciiファイルに入れるプロセスがあります。 今私は、SQLクエリによってフェッチされた行がない場合、asciiファイルにデフォルト行があるはずです。SQLでデフォルトの行を返します
クエリでフェッチされた行がない場合、sqlでデフォルトの行を出力することができます。 注:pl/sqlを使用したくありません。
あなたはこのためにUNION ALLを使用することができます。私は何行がむしろにオラクルを得るよりも返されない場合は書き込みASCIIファイルは、デフォルトのデータを書き込むプロセスを持っているきれいだろうと思われる
select a, b, c from foobar
where foo='FOO'
union all
select 'def', 'ault', 'value' from dual
where not exists (select 'x' from foobar where foo='FOO')
それをやる。あなたが使用しているクエリが高価な場合、ammoQとDavid Oniellが行ったようにデフォルトの行を返すようにファジーすると、そのコストが大幅に増加します。
With my_query as
(
select a, b, c from foobar where foo='FOO'
)
Select a,b,c
From my_query
Union All
Select ...
From dual
Where Not Exists
(Select 1 from my_query)
/
別の(悲しい、ねじれた)オプションがあります。 CTEまたはサブクエリの繰り返しは必要ありません。
select
coalesce(a, 'def'),
coalesce(b, 'ault'),
coalesce(c, 'value')
from foobar
right join (select 1 from dual) on 1=1
where foobar.some_condition;
、私は句 – ninesided
前my_queryは、グループ式を使用している場合、どのようなことを見たことがありませんか?どのように5行目でそれらを使用するには? –
持つため1 – zygimantus
:行が結果セットに存在するかどうかを見つけることにオーバーヘッドが不利であるか、またはクエリが単に非常に大きくて扱いにくく、次いでサブクエリファクタリング句は有益かもしれない複雑なクエリについて
「デュアル」とは何ですか? –
@AlbertoAcuña "dual"は、定数が選択される仮想テーブルを表すOracle固有の奇妙な規則です。 – Reinderien
優れたanswer.thanks素敵ammoQ – Vijay