Subject Re: [firebird-support] Possible to use FIRST 1 inside a group by?
Author setysvar
>Hi,
>
>I’ve got quite a tricky SQL query (well, at least for me it is, I’m
hoping someone may have done this before)
>
>Here’s a simplified example of what I’m trying to do:
>
>I have a table with
>
>ID GroupID FKCode Value
>1 1 ABC +5
>2 1 XYZ -5
>3 2 ABC +8
>4 2 XYZ -8
>5 3 ABC -2
>6 3 XYZ +2
>
>I’d like to select the first record of each group, eg.
>
>ID GroupID FKCode Value
>1 1 ABC +5
>3 2 ABC +8
>5 3 ABC -2
>
>Any ideas?

Very simple:

select ID, GroupID, FKCode, Value
from MyTable T
where not exists(select * from MyTable T2
where t.GroupID = t2.GroupID
and t.ID > t2.ID)

If ID is the primary key and you have an index for GroupID, I would
expect this to be quite fast. Sean's solution is an alternative that
maybe have similar performance, the other suggestions ought to be
avoided except for tiny tables.

HTH,
Set