How do I select the first row per group in an SQL Query?

后端 未结 9 998
别跟我提以往
别跟我提以往 2020-12-29 09:26

I\'ve got this SQL query:

SELECT   Foo, Bar, SUM(Values) AS Sum
FROM     SomeTable
GROUP BY Foo, Bar
ORDER BY Foo DESC, Sum DESC

This resul

9条回答
  •  青春惊慌失措
    2020-12-29 10:02

    Curious. Only way I could get this to work was by using a temporary holding table in memory. (TSQL syntax)

    -- original test data
    declare @sometable table ( foo int, bar int, value int )
    
    insert into @sometable values (1, 5, 10)
    insert into @sometable values (1, 4, 20)
    insert into @sometable values (2, 1, 1)
    insert into @sometable values (2, 1, 10)
    insert into @sometable values (2, 1, 1)
    insert into @sometable values (2, 2, 13)
    insert into @sometable values (3, 4, 25)
    insert into @sometable values (3, 5, 1)
    insert into @sometable values (3, 1, 1)
    insert into @sometable values (3, 1, 1)
    insert into @sometable values (3, 1, 1)
    insert into @sometable values (3, 1, 1)
    insert into @sometable values (3, 1, 1)
    
    -- temp table for initial aggregation
    declare @t2 table (foo int, bar int, sums int)
    insert into @t2
    select foo, bar, sum(value) 
    from @sometable
    group by foo, bar
    
    -- final result
    select foo, bar, sums
    from @t2 a
    where sums = 
        (select max(sums) from @t2 b 
         where b.foo = a.foo)
    

提交回复
热议问题