【发布时间】:2021-12-02 15:51:08
【问题描述】:
已通过建议的更改和遇到的新错误更新了问题, 我正在执行这段代码
SELECT
b.*,
COUNT(CASE WHEN DOJ <= current_date
AND (DOL IS NULL OR DOL >= current_date)
THEN ID END) FIRST
FROM
(
select ID,max(case when a.massn in('00','A1') then a.begda end) as DOJ,
max(case when a.massn in ('A4') then a.begda end) as DOP,
max(case when a.massn in ('A3','A5') then a.begda end) as DOT,
max(case when a.massn='A6' then a.begda end) dol,
max(case when a.massn in ('A6') then a.aedtm end) as changed_on_date,
max(case when a.massn in ('A6') then massn end) as massn,
max(case when a.massn in ('A6') then massg end) as massg
from "Table"."T1" a
group by ID
)b
WHERE FIRST = 1
我收到一个错误:
ORA-01861: 文字与格式字符串不匹配 01861. 00000 - “文字与格式字符串不匹配” *原因:输入中的文字必须与输入中的文字长度相同 格式字符串(前导空格除外)。如果 “FX”修饰符已打开,文字必须完全匹配, 没有额外的空格。 *操作:更正格式字符串以匹配文字。
我们将不胜感激任何帮助
【问题讨论】:
-
您要查询哪些表?
-
FIRST是 Oracle 中的一个函数(保留关键字),但在这里您尝试将其用作别名。如果您想将其用作列名/别名,请在"FIRST"周围添加一些双引号。您还需要在WHERE子句中将双引号添加到FIRST。 -
当前抛出的错误(可能还有其他错误)是由于选择了
*以及其他原因造成的。选择“所有列”和其他内容的唯一方法是在from子句中给表一个别名,例如:from my_table t,然后在select子句中使用它像这样:select t.*, ...除此之外,from ()是什么意思?您肯定没有名为()的表格,那您为什么要展示它?你需要帮助吗? -
@JNevill,不是真的。您可以这样使用
first。它是一个关键字,而不是一个保留字。 -
我的错误。那么一定是@Mathguy 的出色表现:)