首页 > 解决方案 > 在 Oracle View 的 where 子句中添加条件

问题描述

我在 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)

标签: oracleviewwhere-clausecase-when

解决方案


那岂不是

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')

推荐阅读