【问题标题】:Get two or more rows from Firebird DB using max使用 max 从 Firebird DB 获取两行或更多行
【发布时间】:2022-10-18 22:14:46
【问题描述】:

我正在尝试使用 max 从查询中获取至少两行。我有一个关于让所有客户的汽车的查询,需要将它与服务的最后日期和订单号结合起来。

select
b.year,
b.class,
b.vin,
b.plates,
a.name,
a.street,
...
from cars b
left join customers a on a.id=b.customer

现在我需要获取此订单的最后一个订单号和日期,并找到使用最后一个日期的方法

(select max(x.order_date) from orders x where x.car=b.id)

如何从同一张桌子上同时获得 x.order_number ?

【问题讨论】:

  • 请提供样本数据和该样本数据的预期结果。我不明白你对你需要什么的描述。
  • 基于@MarkRotteveel 的评论,我思考您可以向我们展示表格 CARS(ID, MODEL)、BUYERS(ID, NAME) 和 ORDERS(ORDER_NUM, ORDER_DATE, CAR_ID, BUYER_ID)有样本数据.但我不知道这实际上描述了你的问题。请给我们看!

标签: sql select greatest-n-per-group firebird


【解决方案1】:

如果我理解正确,您可以这样做:

select g.year,
       g.class,
       g.vin,
       g.plates,
       g.name,
       g.street,
       g.maxID,
       (select x.order_date from orders x where x.order_number = g.maxID) maxDate
  from ( 
         select b.year,
                b.class,
                b.vin,
                b.plates,
                a.name,
                a.street,
                (select max(x.order_number) from orders x where x.car=b.id) maxID
           from cars b
           left join customers a on a.id=b.customer
        ) g

我真的不知道这是否是更有效的方法,但会完成这项工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2020-10-12
    相关资源
    最近更新 更多