如何在SQL中从视图查询别名列?
在此处输入代码我创建了一个视图,其中只有很少的列作为别名,值为空。例如:如何在SQL中从视图查询别名列?,sql,oracle,sql-view,Sql,Oracle,Sql View,在此处输入代码我创建了一个视图,其中只有很少的列作为别名,值为空。例如: CREATE OR REPLACE VIEW ABC_V AS (SELECT ORG_CODE, CURRENCY, '' "ExpiryDate" FROM ABC ); ExpiryDate列在表ABC 现在我想查询select语句中的所有三列值,以准备一个分隔的文本文件 select ORG_CODE||'|'||CURRENCY||'|'||ExpiryDa
CREATE OR REPLACE VIEW ABC_V AS
(SELECT ORG_CODE,
CURRENCY,
'' "ExpiryDate"
FROM ABC
);
ExpiryDate
列在表ABC
现在我想查询select
语句中的所有三列值,以准备一个
分隔的文本文件
select ORG_CODE||'|'||CURRENCY||'|'||ExpiryDate
from( SELECT ORG_CODE,
CURRENCY,
ExpiryDate FROM ABC_V );
但是我得到了错误
**ORA-00904:“到期日”:无效标识符
90400000-%s:无效标识符
原因:行动:
请建议一种方法来实现这一点。他是如何做到这一点而不出错的:
select ORG_CODE || '|' || CURRENCY || '|' || "ExpiryDate"
from( SELECT ORG_CODE
, CURRENCY
, "ExpiryDate"
FROM ABC_V );
下面是一个演示:
当您将ExpiryDate括在双引号中时,必须这样做-完全按照相同的字母大小写-始终引用它 因此:
更好的选择:在使用Oracle时取消双引号,并执行以下操作:
CREATE OR REPLACE VIEW abc_v
AS
SELECT org_code, currency, '' expirydate FROM abc;
SELECT org_code || '|' || currency || '|' || expirydate FROM abc_v;
(无需子查询)。无需创建额外视图来添加此类伪列(从11g开始) 您可以直接在表上使用虚拟列
alter table tab add (
"ExpiryDate" DATE as (NULL)
);
您可以使用新列查询表(但请记住double quotetd colun名称,并保留定义的大小写!)
错误在于您在名称上使用了双引号。因此,您告诉Oracle列名区分大小写。我的建议是:在声明名称时不要使用双引号。使用下划线表示可读性:
''作为到期日
。如果没有引号,您可以选择列,因此:选择到期日…
因此:选择到期日…
因此:选择到期日…
-该列不区分大小写。
alter table tab add (
"ExpiryDate" DATE as (NULL)
);
SELECT ORG_CODE,
CURRENCY,
"ExpiryDate"
FROM tab;