【问题标题】:Select only records with last date仅选择具有最后日期的记录
【发布时间】:2021-01-15 15:09:01
【问题描述】:

我执行了这个查询:

SELECT
    bookings.id
    , bookings.confirmed_at
    , bookings.disputed
    , bookings.disputed_at
    , bookings.no_show_blocked_until
    , bookings.user_id
    , bookings.refunded
    , bookings.refunded_at
    , invoices.id AS invoice_id
    , invoices.state
    , invoices.currency_to_eur
    , lessons.time
FROM
    bookings
    LEFT JOIN invoice_lines
        ON invoice_lines.booking_id = bookings.id
    LEFT JOIN invoices
        ON invoices.id = invoice_lines.invoice_id
    LEFT JOIN lesson_bookings
        ON lesson_bookings.booking_id = bookings.id
    LEFT JOIN lessons
        ON lessons.id = lesson_bookings.lesson_id

我的问题是我得到的分区显示了许多具有相同 booking_id 和 invoice_id 的记录,但与课程时间列的日期不同。对于具有相同预订 ID 和发票 ID 的记录,我只想获取具有最后日期的记录。请问我该怎么办?

示例:

booking_id invoice_id 日期

123 325 01/01/2020 123 325 01/02/2020 123 200 01/05/2020 123 300 01/05/2020 200 600 07/08/2020

我想得到的是:

123 325 01/02/2020 123 200 01/05/2020 123 300 01/05/2020 200 600 07/08/2020

【问题讨论】:

  • 请以文本形式提供示例数据和所需输出
  • 您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库使用的一种查询语言,而不是特定数据库产品的名称和日期函数是完全特定于供应商的。请为您使用的数据库产品添加tagWhy should I tag my DBMS
  • 标签已添加!我实际上正在使用 Postgresql

标签: sql date


【解决方案1】:
WHERE lessons.time = 
    (SELECT MAX(l.time) 
    FROM lessons l 
    WHERE l.id = lessons.id)

【讨论】:

  • 我添加了此代码,但仍显示具有相同 booking_id/invoice_id 且日期值不同的记录
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 2019-01-23
  • 2013-08-25
相关资源
最近更新 更多