gpt4 book ai didi

sql - ORA-00904 : ORDER BY with UNION ALL

转载 作者:行者123 更新时间:2023-12-04 22:12:33 25 4
gpt4 key购买 nike

我正在创建一个带有标题的平面文件。我收到一个 ORA-00904 错误,我认为这是因为我创建的 header 没有“employee_name”字段(我的假设是否正确?)。
如果是,如何在没有标题的情况下对查询进行排序?

我得到的错误:
ORA-00904: "employee_id": 无效标识符


我的代码:
从双中选择“文件名”作为文件记录
联合所有
选择“文件日期:”|| to_char(sysdate,'mm/dd/yyyy) as filerec from dual
联合所有
选择员工 ID ||来自employee_database 的emloyee_name 作为filerec
按employee_id 排序;


这是我想要产生的输出:
文档名称
文件日期:02/27/2015
200125露丝陈
200126丹·冈萨雷斯
200135Lisa Mayoral

最佳答案

SQL ,您不能命名 中的列订购者 复合声明 ,你必须使用 列位置 .

或者,

显式投影列 .

在您的情况下,由于您已经连接了列,因此您不能明确地投影它们,而且列位置也没有任何意义。因此,您可以玩一个小把戏。添加一个伪列,将所需的值添加到要先排序的行中,然后使用 您希望在第一列之后对其进行排序的伪列中的值。因此,NULL 总是放在排序的末尾。

例如,

SQL> SELECT filerec FROM (
2 SELECT 'FILENAME' AS filerec, 1 col FROM dual
3 UNION ALL
4 SELECT 'FILEDATE: ' || to_char(SYSDATE,'mm/dd/yyyy') as filerec, 2 col FROM dual
5 UNION ALL
6 SELECT empno || ename AS filerec, NULL col FROM emp
7 ORDER BY 2,1
8 );

FILEREC
--------------------------------------------------
FILENAME
FILEDATE: 02/27/2015
7369SMITH
7499ALLEN
7521WARD
7566JONES
7654MARTIN
7698BLAKE
7782CLARK
7788SCOTT
7839KING
7844TURNER
7876ADAMS
7900JAMES
7902FORD
7934MILLER

16 rows selected.

SQL>

关于sql - ORA-00904 : ORDER BY with UNION ALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28762517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com