I would like oracle to include the following SQL statements in the where clause and introduce them into the case statement to branch the conditions.
Prerequisites include columns similar to the following
A=ID Last Use Date
B=ID registration date
C = ID Published
SQL
that you want to include in the where clause below and introduce in the case statement to branch conditions.If column A is not null, see column A
If column A is null and Published > Registration Date, see Published
See registration date if column A is null and release date <registration date
I would like to put SQL like the above in where clause, introduce it in case statement, and then branch the conditions.
If you put it in the where clause, the case statement does not understand the grammar according to the above, so it does not work.
What grammar is appropriate in oracle to deploy the algorithms like the one above?
sql oracle
You can use case statements in the where clause, so refer to the A,B,C
column in the where clause case statement.
The grammar in oracle that is appropriate for deploying such algorithms is to use nvl
and greatest
in conjunction with greatest
to refer to the larger values of B and C in the absence of A.
However, the conditions in the questionnaire do not describe the behavior when B and C are equivalent, so please modify them according to your request.
select nvl(A,greatest(B,C)) as NVL_GREATEST,
case when A is null then
case when B>C then B
when B<C then C
else null -- this line does not have to be the same
e n d
else A
end CASE_NEST
from(select to_date('January 1, 2019') as A, to_date('November 2, 2019') as B, to_date('November 3, 2019') as C from dual union all -- A exists
select null as A, to_date('11/02/2019') as B, to_date('01/03/2009) as C from dual union all -- B is large
select null as A, to_date('01/02/2009) as B, to_date('11/03/2019') as C from dual union all -- C is large
select null as A, to_date('11/11/11/2019') as B, to_date('11/11/2019') as C from dual --B and C are equivalent
)
where date > case when A is null then
case when B>C then B
when B<C then C
else null
e n d
else A
e n d
--where sysdate>nvl(A,greatest(B,C))
918 When building Fast API+Uvicorn environment with PyInstaller, console=False results in an error
582 PHP ssh2_scp_send fails to send files as intended
620 Uncaught (inpromise) Error on Electron: An object could not be cloned
573 rails db:create error: Could not find mysql2-0.5.4 in any of the sources
© 2024 OneMinuteCode. All rights reserved.