Sql 在Oracle中使用IF-ELSE

Sql 在Oracle中使用IF-ELSE,sql,oracle,toad,Sql,Oracle,Toad,作为一名web开发人员,我知道如何在多种语言中使用IF-ELSE。然而,我正在学习如何使用TOAD for Oracle编写报告 我的问题是,如何正确添加IF-ELSE语句 这就是我试图做的。 错误是:命令未正确结束 (VIKKIE to ICKY已被我的主管委托帮助我学习) 如果是PL/SQL构造。如果您正在执行查询,那么您使用的是SQL而不是PL/SQL 在SQL中,可以在查询本身中使用CASE语句 SELECT DISTINCT a.item, (CASE

作为一名web开发人员,我知道如何在多种语言中使用IF-ELSE。然而,我正在学习如何使用TOAD for Oracle编写报告

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

这就是我试图做的。 错误是:命令未正确结束

(VIKKIE to ICKY已被我的主管委托帮助我学习)


如果
是PL/SQL构造。如果您正在执行查询,那么您使用的是SQL而不是PL/SQL

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

SELECT DISTINCT a.item, 
                (CASE WHEN b.salesman = 'VIKKIE'
                      THEN 'ICKY'
                      ELSE b.salesman
                  END), 
                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 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

由于您没有进行任何聚合,因此在查询中不需要
分组依据。你真的确定你需要不同的
?人们通常会随意地加入或在缺少连接条件时添加它,而不是考虑是否真的有必要做额外的工作来识别和删除重复项。

您也可以使用
解码

SELECT DISTINCT a.item, decode(b.salesman,'VIKKIE','ICKY',Else),NVL(a.manufacturer,'Not Set')Manufacturer
FROM inv_items a, arv_sales b
WHERE a.co = b.co
      AND A.ITEM_KEY = b.item_key
      AND a.co = '100'
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, b.salesman, a.manufacturer
ORDER BY a.item

你到底想干什么?如果它在SELECT中,请使用用例,或者执行适当的PL/SQL块。感谢您花时间不仅展示了解决方案,而且解释了我的错误原因。虽然我发现了一个错误(在我的原始代码中),但我能够修复它并使用您的示例。错误是:我用b.推销员而不是a.制造商。一般来说,结果可能不是你所期望的。
SELECT DISTINCT a.item, decode(b.salesman,'VIKKIE','ICKY',Else),NVL(a.manufacturer,'Not Set')Manufacturer
FROM inv_items a, arv_sales b
WHERE a.co = b.co
      AND A.ITEM_KEY = b.item_key
      AND a.co = '100'
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, b.salesman, a.manufacturer
ORDER BY a.item