次のようなことを達成する可能性があるかどうか疑問に思っています
「if-elseif-else」条件、「case-when-then-else」があることは知っていますが、一度に1つの条件のみをチェックします(正しく理解していれば)。Oracle SQLでif-elseif-elseシナリオを実現するにはどうすればよいですか
このように case ステートメントを使用して if/else を使用できます。
SELECT ename, CASE WHEN sal = 1000 THEN 'Minimum wage'
WHEN sal > 1000 THEN 'Over paid'
ELSE 'Under paid'
END AS "Salary Status"
FROM emp;
「case-when-then-else」があることは知っていますが、一度に 1 つの条件しかチェックしません
あなたが説明しているのは単純なケースです。Oracle には、SIMPLE と SEARCHED の 2 つのケース タイプがあります (詳細については、こちらを参照してくださいhttp://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm )
単純
case A
when 1 then 'foo'
when 2 then 'bar'
else ..
end
検索した
case
when A=1 and B='A' then 'foo'
when D + C =1 and B !='A' then 'Bar'
else ..
end
おそらく、検索されたケースを使用する必要があります。PL/SQL または SQL で使用できます。たとえばSQLで
select ..
from table
where case
when A=1 and B='A' then 'foo'
when D + C =1 and B !='A' then 'Bar'
else ..
end = 'foo'
「Decode in Oracle」に注意してください
decode( expression , search , result [, search , result]... [, default] )
「if-elseif-else」に似ています
参照: http://www.techonthenet.com/oracle/functions/decode.php
注:等価チェックのみを行います。