【问题标题】:Oracle select max from multiply tablesOracle 从多个表中选择最大值
【发布时间】:2020-05-28 18:12:03
【问题描述】:

我有这个问题。它不起作用。我需要从 3 个表中的字段中选择 MAX,其中年份 = 2002。这段代码给了我“order_number”:invalid identifier”。但它存在于表中。出了什么问题。使用别名的同样错误:

select MAX(ROUND(to_number(replace(substr(order_number,0, INSTR(a.order_number,'-')-1),'.',',')))) from(
SELECT e.order_date FROM employee_trip_orders e
where EXTRACT(YEAR FROM e.order_date)='2020' 
union all
SELECT p.order_date FROM postgraduate_trip_orders p
where EXTRACT(YEAR FROM p.order_date)='2020' 
union all
SELECT s.order_date FROM student_trip_orders s
where EXTRACT(YEAR FROM s.order_date)='2020' 
) a

提前致谢)

【问题讨论】:

    标签: sql oracle select max union


    【解决方案1】:

    您从未在联合子查询中选择 order_number,因此 Oracle 告诉您此列在外部选择中不可用。试试这个版本:

    SELECT MAX(ROUND(TO_NUMBER(REPLACE(SUBSTR(order_number, 0, INSTR(order_number, '-') - 1), '.', ','))))
    FROM
    (
        SELECT order_number FROM employee_trip_orders EXTRACT(YEAR FROM order_date) = 2020 UNION ALL
        SELECT order_number FROM postgraduate_trip_orders EXTRACT(YEAR FROM order_date) = 2020 UNION ALL
        SELECT order_number FROM student_trip_orders EXTRACT(YEAR FROM order_date) = 2020
    ) t;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      相关资源
      最近更新 更多