maf*_*afu 13 sql sql-server-ce
我有这个SQL查询:
SELECT Foo, Bar, SUM(Values) AS Sum
FROM SomeTable
GROUP BY Foo, Bar
ORDER BY Foo DESC, Sum DESC
Run Code Online (Sandbox Code Playgroud)
这导致输出类似于:
47 1 100
47 0 10
47 2 10
46 0 100
46 1 10
46 2 10
44 0 2
Run Code Online (Sandbox Code Playgroud)
我想每个Foo只有第一行,而忽略其余的.
47 1 100
46 0 100
44 0 2
Run Code Online (Sandbox Code Playgroud)
我怎么做?
Ant*_*iev 25
declare @sometable table ( foo int, bar int, value int )
insert into @sometable values (47, 1, 100)
insert into @sometable values (47, 0, 10)
insert into @sometable values (47, 2, 10)
insert into @sometable values (46, 0, 100)
insert into @sometable values (46, 1, 10)
insert into @sometable values (46, 2, 10)
insert into @sometable values (44, 0, 2)
;WITH cte AS
(
SELECT Foo, Bar, SUM(value) AS SumValue, ROW_NUMBER() OVER(PARTITION BY Foo ORDER BY FOO DESC, SUM(value) DESC) AS RowNumber
FROM @SomeTable
GROUP BY Foo, Bar
)
SELECT *
FROM cte
WHERE RowNumber = 1
Run Code Online (Sandbox Code Playgroud)