Oracle SQL 视图无法处理以下情况

问题描述 投票:0回答:1

我正在 Oracle 数据库中创建以下视图

CREATE  VIEW "view"."table2" ( "type1", "type2") AS 
  SELECT

        CASE WHEN n.flag2 = 'Y' AND n.flag1 = 'Y' THEN 'n1' 
        WHEN n.flag2 = 'N' AND n.flag1 = 'Y' THEN 'n2' WHEN n.flag2 = 'Y' AND n.flag1 = 'N' THEN 'n3' else 'n4' end as type1,
        CASE WHEN post_code in ('AB') THEN 'w' WHEN post_code in ('NB') THEN 'e' ELSE 'o' END AS type2

    FROM
        (
            SELECT
                
                CASE WHEN date1 > SYSDATE + 1 AND email11 IS NOT NULL  THEN 'Y' ELSE 'N' END AS flag1,
                CASE WHEN date2 > SYSDATE + 12 AND email2 IS NOT NULL  THEN 'Y' ELSE 'N' END AS flag2,
                post_code
                
            FROM
                table1 m
            WHERE
               date3 > sysdate ) n; 

当我在下面运行时

从表2中选择*;

但是当我运行时 select type1 from table2;这是我的错误

无效的标识符 00904. 00000 - “%s:无效标识符”

我尝试了多个视图来修改视图,但我的方法都不起作用

sql oracle view case
1个回答
0
投票

如果您使用带引号的标识符:

CREATE VIEW "view"."table2" ( "type1", "type2")

然后做:

select "type1" from "table2"

但是,在实践中更常见的是不使用引号。

CREATE VIEW view.table2 ( type1, type2)

select type1 from table2
© www.soinside.com 2019 - 2024. All rights reserved.