2017-01-27 7 views
0

です。Oracle sqlでは、表からいくつかの列値を選択します。行が存在しない場合は、各列のデフォルト値を選択します。以下のようなものが必要です行が存在する場合は列を選択します。その他のデフォルト値はoracle

if exists (select 1 from mytable where key ='11') 
then 
select key, value, comment from mytable where key ='11' 
else 
select 'key1' as "key", 'value1' as "value", 'default' as "comment" 

oracleでこれを実行する最も良い方法は何ですか?

答えて

2

これを試してみてください:

select 
    key,value,comment 
from mytable 
where key = '11' 
union all 
select 'key1', 'value1', 'default' from dual 
where not exists (select 1 from mytable where key = '11') 
0
WITH defaults (key, value, comment) AS (
    SELECT 'key1', 'value1', 'Default' FROM DUAL UNION ALL 
    SELECT 'key2', 'value2', 'Default' FROM DUAL UNION ALL 
    SELECT 'key3', 'value3', 'Default' FROM DUAL UNION ALL 
    SELECT 'key4', 'value4', 'Default' FROM DUAL 
) 
SELECT COALESCE(t.key,  d.key ) AS key, 
     COALESCE(t.value, d.value ) AS value, 
     COALESCE(t.comment, d.comment) AS comment 
FROM defaults d 
     FULL OUTER JOIN 
     your_table t 
     ON (t.key = d.key); 
関連する問題