Sql 具有自定义命名列的未知标识符

Sql 具有自定义命名列的未知标识符,sql,oracle,Sql,Oracle,我想这很容易解决,但我不明白: SELECT TO_NUMBER(PERS_NR) AS Spieler1, TO_NUMBER(PERS_NR) AS Spieler2 FROM DBS_TAB_MITARBEITER WHERE Spieler1 < Spieler2; 选择TO_NUMBER(PERS_NR)作为Spiler1,TO_NUMBER(PERS_NR)作为Spiler2 来自DBS\u TAB\u MITARBEITER 其中,Spiler1

我想这很容易解决,但我不明白:

SELECT TO_NUMBER(PERS_NR) AS Spieler1, TO_NUMBER(PERS_NR) AS Spieler2 
FROM DBS_TAB_MITARBEITER 
WHERE Spieler1 < Spieler2;
选择TO_NUMBER(PERS_NR)作为Spiler1,TO_NUMBER(PERS_NR)作为Spiler2
来自DBS\u TAB\u MITARBEITER
其中,Spiler1
我得到一份工作

未知标识符


where
子句中出现错误。为什么?

您的
where
子句不起作用,因为此时字段还不知道。您必须使用真实的列名:

SELECT TO_NUMBER(PERS_NR) AS Spieler1, TO_NUMBER(PERS_NR) AS Spieler2 
FROM DBS_TAB_MITARBEITER 
WHERE TO_NUMBER(PERS_NR) < TO_NUMBER(PERS_NR);
选择TO_NUMBER(PERS_NR)作为Spiler1,TO_NUMBER(PERS_NR)作为Spiler2
来自DBS\u TAB\u MITARBEITER
收件人编号(PERSU NR)<收件人编号(PERSU NR);

当您这样做时,您会立即看到您的查询没有生成任何行,因为
where
子句不可能生成
true

您的
where
子句不起作用,因为此时字段还不知道。您必须使用真实的列名:

SELECT TO_NUMBER(PERS_NR) AS Spieler1, TO_NUMBER(PERS_NR) AS Spieler2 
FROM DBS_TAB_MITARBEITER 
WHERE TO_NUMBER(PERS_NR) < TO_NUMBER(PERS_NR);
选择TO_NUMBER(PERS_NR)作为Spiler1,TO_NUMBER(PERS_NR)作为Spiler2
来自DBS\u TAB\u MITARBEITER
收件人编号(PERSU NR)<收件人编号(PERSU NR);

当您这样做时,您会立即看到您的查询不会产生任何行,因为
where
子句不可能产生
true

您的查询不会返回任何行,因为数字永远不会严格小于自身。您的查询不会返回任何行,因为数字永远不会严格小于自身。@谢谢。情不自禁:)@谢谢。情不自禁:)