私は特にひどく見える古いSQLクエリを書き直そうとしています。優先順位のためにwhereステートメントの値の優先順位を付けるより効率的な方法があるのだろうかと思います。基本的に、このテーブルにはユーザごとに複数のemail_codeレコードが含まれていますが、どのレコードが優先されるかに基づいて優先順位を付けたいと思います。この場合、email_codeがWORKの場合は選択する必要があります。しかし、WORKレコードがない場合は、HOMEを選択する必要があります。ここで私が働いているものの例です。これを行うにはより優雅な方法が必要です...?oracleは優先度に基づいて選択します
select
*
from
email m
where
status_ind='A'
and decode(email_code, 'WORK',1,
'HOME',2,
'ALT1',3,
'ALT2',4,5) = (select
min(decode(email_code, 'WORK',1,
'HOME',2,
'ALT1',3,
'ALT2',4,5))
from
email
where
email_uid = m.email_uid
and status_ind='A');
あなたはCOALESCEを参考にしていますか? https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions023.htm – Danilo
この状況では、COALESCEは機能しません。場合によっては、レコードにこれらのコードの4つすべてが含まれる場合があります。それは優先順位の詳細です。 – oljones