简体   繁体   English

在情况下选择语句

[英]Select statement in CASE condition

.I have the following code 我有以下代码

 SELECT BRCODE,PRCODE,SHORTNAME,SUM(NVL(CUMSALE,0)-NVL(CUMCRD,0)) NETSALE,SUM(CUMTAR) TRGT,ROUND(SUM(NVL(CUMSALE,0)-NVL(CUMCRD,0))/SUM(CUMTAR)*100,2) ACH 
case
when regexp_like(:lprdate, 'OCT' ) = 'OCT' then
select statement for OCT
when regexp_like(:lprdate, 'NOV' ) = 'NOV' then
select statement for NOV
when regexp_like(:lprdate, 'JAN' ) = 'DEC' then
select statement for DEC
ELSE
SELECT BRCODE,PRCODE,SHORTNAME,SUM(NVL(CUMSALE,0)-NVL(CUMCRD,0)) NETSALE,SUM(CUMTAR) TRGT,ROUND(SUM(NVL(CUMSALE,0)-NVL(CUMCRD,0))/SUM(CUMTAR)*100,2) ACH 
FROM ANALYSIS1 WHERE LASTRPTDT1 = :lprdate1 GROUP BY BRCODE,PRCODE,SHORTNAME  order by BRCODE,PRCODE
END

Here :lprdate and :lprdate1 are user inputs fired while generating reports. :lprdate和:lprdate1是生成报告时触发的用户输入。 User may input Oct , Nov ,Dec for :lprdate and Jan for :lprdate1 . 用户可以为:lprdate输入十月,十一月,十二月,为:lprdate1输入一月。 will this case statement help in providing the results according to the codnitions given in case statement? 该案例说明是否有助于根据案例说明中提供的条件提供结果?

For example if I give :lprdate = '31-OCT-17' , will this go in the first case statemnt? 例如,如果我给出:lprdate = '31 -OCT-17',这会在第一种情况下出现吗? Please help. 请帮忙。 No i haven't tried the code due to some technical issues with the software. 不,由于该软件存在一些技术问题,我没有尝试过该代码。 If i get to know whether this solution is working, I would be happy to execute quickly 如果我知道此解决方案是否有效,我将很乐意迅速执行

You could try something like this: 您可以尝试这样的事情:

select monthname, somenumber, sometext
from
( select 'OCT' as monthname, 123 as somenumber, 'Demo for October' as sometext from dual
  union all
  select 'NOV' as monthname, 456 as somenumber, 'Demo for November' as sometext from dual
  union all
  select 'DEC' as monthname, 789 as somenumber, 'Demo for December' as sometext from dual
)
where  monthname = :param;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM