Subject | Re: [firebird-support] Possible to use FIRST 1 inside a group by? |
---|---|
Author | setysvar |
Post date | 2015-07-29T18:11:53Z |
>Hi,hoping someone may have done this before)
>
>I’ve got quite a tricky SQL query (well, at least for me it is, I’m
>Very simple:
>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?
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