Subject Re: [firebird-support] Re: Firebird 2.5: Nested querys help
Author setysvar
Den 31.08.2017 21:01, skrev duque.hernando@... [firebird-support]:
  Set, thank you for your help.

I'll like to explain my self better. If having these records:

  table_id  date_time         customer_id  other_fields
  --------  ----------------  -----------  ------------
  001       08/30/2017 08:00  0015         whatever
  002       08/30/2017 08:10  0025         whatever
  003       08/30/2017 08:20  0025         whatever
  004       08/30/2017 08:30  0011         whatever
  005       08/30/2017 08:40  0014         whatever
  006       08/30/2017 08:50  0025         whatever
  007       08/30/2017 09:00  0021         whatever
  008       08/30/2017 09:10  0024         whatever
...

What I need is to select only the first record (based on date_time) from each customer_id. Like this:

  table_id  date_time         customer_id  other_fields
  --------  ----------------  -----------  ------------
  001       08/30/2017 08:00  0015         whatever
  002       08/30/2017 08:10  0025         whatever
  004       08/30/2017 08:30  0011         whatever
  005       08/30/2017 08:40  0014         whatever
  007       08/30/2017 09:00  0021         whatever
...

OK Hernando, then it is simply

SELECT xx0.*
FROM my_table xx0
WHERE NOT EXISTS(SELECT *
                 FROM my_table xx1
                 WHERE XX0.customer_id = XX1.customer_id
                   AND (XX0.date_time > XX1.date_time
                      OR (XX0.date_time = XX1.date_time
                      AND XX0.table_id > XX1.table_id)))

What's after the OR is fairly unlikely to happen, it covers the case of identical timestamps. It is up to you whether you want the last two lines to cover this or only keep the first six lines.

HTH,
Set