我有一个非常棘手的问题。我有一张有成本的桌子,非常简单:
Cost name, cost value
我想用名称输出TOP 10
成本值,这没有问题,但是:作为第11行,我想输出所有其他的总和作为“其他”标记...这是否可能与一个SQL查询?
我希望你理解我的问题,我非常感谢所有有用的答案。
致以最诚挚的问候,
托拜厄斯
更新:
<<数据示例>>
答案 0 :(得分:3)
请尝试:
;with T as(
select *, ROW_NUMBER() over (order by value desc) RNum
from YourTable
)
select value, name from T
where RNum<=10
union all
select sum(value), 'Others'
from T
where RNum>10
答案 1 :(得分:1)
也许是这样的?
select * from (select top (10) name, value from costs order by value) s1
UNION (
select 'other', sum(value) from costs
where name not in (select top 10 Name from costs order by value)
)
这假定Name是成本的PK。
答案 2 :(得分:1)
;with CTE as(SELECT Name ,
value ,row_number() OVER (ORDER BY Name) AS RowNumber FROM #Temp )
select Name,value
from cte
Where RowNumber<11
union
select 'Other',Sum(value)
from cte
Where RowNumber>=11
示例Fiddle