将行值合并为“其他”

时间:2014-04-11 11:39:24

标签: sql sql-server

我有一个非常棘手的问题。我有一张有成本的桌子,非常简单:

Cost name, cost value

我想用名称输出TOP 10成本值,这没有问题,但是:作为第11行,我想输出所有其他的总和作为“其他”标记...这是否可能与一个SQL查询?

我希望你理解我的问题,我非常感谢所有有用的答案。

致以最诚挚的问候,

托拜厄斯

更新:

enter image description here

<<数据示例>>

3 个答案:

答案 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