Well, your original query seems pretty simply to me.
There is no other (simpler) way to write this if you want to write
standard (ANSI SQL) code. If you don't mind using Microsoft proprietary
syntax, then you can use SELECT TOP 1 .. ORDER BY column_b DESC, as
suggested by someone else. If column_b is not unique, you can use SELECT
TOP 1 WITH TIES.
Personally, if there is no real reason to use MS syntax then I prefer
standard SQL. Unless the query is called x times per second, I would
stay with SELECT .. WHERE column_b = (SELECT MAX(..))
Gert-Jan
[quoted text, click to view] Aaron Lawrence wrote:
>
> Hello all.
>
> Is there a simpler way to write something like this:
>
> select column_a from table
> where column_b = ( select max( column_b ) from table )
>
> ie. find the row where column_b is at it's maximum and return another
> column's value?
>
> something like (hypothetically)
>
> select column_a from table
> where column_b is max
>
> Leaving aside the issue of whether max( column_b ) is unique ...
>
> Thanks.
>
[quoted text, click to view] Gert-Jan Strik wrote:
> Well, your original query seems pretty simply to me.
Yes, it is. The problem arises when there is other criteria, which have
to be duplicated on both where clauses.
[quoted text, click to view] > There is no other (simpler) way to write this if you want to write
> standard (ANSI SQL) code. If you don't mind using Microsoft proprietary
> syntax, then you can use SELECT TOP 1 .. ORDER BY column_b DESC, as
> suggested by someone else. If column_b is not unique, you can use SELECT
> TOP 1 WITH TIES.
>
> Personally, if there is no real reason to use MS syntax then I prefer
> standard SQL. Unless the query is called x times per second, I would
> stay with SELECT .. WHERE column_b = (SELECT MAX(..))
I wouldn't use that proprietary extension either.
Thanks for your help.
[quoted text, click to view] >
> Gert-Jan
>
>
> Aaron Lawrence wrote:
>> Hello all.
>>
>> Is there a simpler way to write something like this:
>>
>> select column_a from table
>> where column_b = ( select max( column_b ) from table )
>>
>> ie. find the row where column_b is at it's maximum and return another
>> column's value?
>>
>> something like (hypothetically)
>>
>> select column_a from table
>> where column_b is max
>>
>> Leaving aside the issue of whether max( column_b ) is unique ...
>>
>> Thanks.
>>
[quoted text, click to view] kengillett@gmail.com wrote:
> Select top 1 column_a from table order by column_b desc
Hi Ken,
Thanks for the suggestion. That is quite good but I would rather not use
Microsoft-specific syntax.
Don't see what you're looking for? Try a search.