【问题标题】:Add condition in where clause in Oracle View在 Oracle View 的 where 子句中添加条件
【发布时间】:2020-03-25 13:15:53
【问题描述】:

我在 Oracle View 下工作正常。但现在我想添加如下条件组合:

EUREX_ROOT <> ROOT
AND EUREX_ROOT = 'BAY'  

所以我想要所有剩余的数据,不包括具有上述条件组合的数据,但不知道如何在此视图中实现这一点。

在 BB_IMPORT 表字段中 EUREX_ROOT 不存在,我使用 case 条件生成它,因此如果我们尝试在 where 条件下使用此字段,则此处的别名可能会出现问题。

CREATE OR REPLACE VIEW
    BB_IMPORT_TEST
    (        
        ROOT,
        EUREX_ROOT
    ) AS
    (
        SELECT
        ROOT,
        CASE
            WHEN exch_code IN ('EUX')                
            THEN ID_EXCH_SYMBOL            
            ELSE NULL
        END AS "EUREX_ROOT" from BB_IMPORT)

【问题讨论】:

    标签: oracle view where-clause case-when


    【解决方案1】:

    不会吧

    SELECT root, eurex_root
      FROM (SELECT ROOT,
                   CASE
                      WHEN exch_code IN ('EUX') THEN ID_EXCH_SYMBOL
                      ELSE NULL
                   END
                      AS EUREX_ROOT
              FROM BB_IMPORT)
     WHERE NOT (    EUREX_ROOT = ROOT
                AND EUREX_ROOT <> 'BAY')
    

    【讨论】:

    • 我收到错误,因为 EUREX_ROOT 标识符无效...问题在于 BB_IMPORT 字段中的别名 EUREX_ROOT 不存在...这就是我使用大小写条件生成它的原因
    • 啊哈,对不起。因此,您可以将当前查询用作内联视图并对其应用条件。我编辑了我的答案;请看一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2013-12-23
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多