sql – 在Oracle中使用IF ELSE

作为一名Web开发人员,我知道如何在多种语言中使用IF ELSE.但是,我正在学习如何使用TOAD for Oracle编写报告.

我的问题是,如何正确添加IF ELSE语句?

这就是我想要做的.
错误是:命令未正确结束.

(VIKKIE和ICKY一直由我的主管负责帮助我学习)

SELECT disTINCT a.item,b.salesman,NVL(a.manufacturer,'Not Set')Manufacturer

FROM inv_items a,arv_sales b
WHERE   a.co = '100'
      AND a.co = b.co
      AND A.ITEM_KEY = b.item_key   
--AND item IN ('BX4C','BX8C','BX866') --AND salesman ='15'
AND a.item LIKE 'BX%'
AND b.salesman in ('01','15')
AND trans_date BETWEEN to_date('010113','mmddrr')
                         and to_date('011713','mmddrr')


GROUP BY a.item,a.manufacturer
ORDER BY a.item

IF  b.salesman = 'VIKKIE' THEN
a.salesman := 'ICKY';
END IF;

解决方法

IF是PL / sql构造.如果您正在执行查询,则使用的是sql而不是PL / sql.

sql中,您可以在查询本身中使用CASE语句

SELECT disTINCT a.item,(CASE WHEN b.salesman = 'VIKKIE'
                      THEN 'ICKY'
                      ELSE b.salesman
                  END),'Not Set') Manufacturer
  FROM inv_items a,arv_sales b
 WHERE  a.co = '100'
   AND a.co = b.co
   AND A.ITEM_KEY = b.item_key   
   AND a.item LIKE 'BX%'
   AND b.salesman in ('01','15')
   AND trans_date BETWEEN to_date('010113','mmddrr')
                      and to_date('011713','mmddrr')
ORDER BY a.item

由于您没有进行任何聚合,因此您不希望在查询中使用GROUP BY.你真的确定你需要disTINCT吗?人们经常随意抛出它,或者在缺少连接条件时添加它,而不是考虑是否确实需要做额外的工作来识别和删除重复项.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...