恶魔请尽快帮助我。非常感谢,谢谢
我真的很简单。其中有三列Col A Col B Col C
(unique)nameA (UniqueID)1 (somenumber)10
(unique)nameB (UniqueID)2 (somenumber)20
(unique)nameC (UniqueID)3 (somenumber)30
(unique)nameD (UniqueID)4 (somenumber)10
(unique)nameE (UniqueID)5 (somenumber)50
(unique)nameF (UniqueID)6 (somenumber)35
(unique)nameG (UniqueID)7 (somenumber)50
(unique)nameH (UniqueID)8 (somenumber)10
(unique)nameI (UniqueID)9 (somenumber)25
根据我的报告要求,我需要结合唯一ID(1,2,3)给它一个唯一的名称ALFA并求和Col C值并结合(4,5,6)给它一个唯一的名称BETA和Sum他们的Col C值 并按原样在Col C中保留其他唯一ID,唯一名称及其值 在Col C Desc中按值排序并显示TOP 30结果。
所以最终结果应该是这样的
Col A Col B Col C
BETA (unique ID 4,5,6) 95 --(10+50+35 from col C
ALFA (unique ID 1,2,3) 60 --(10+20+30 from col C above)
above)
(unique)nameG (UniqueID)7 (somenumber)50
(unique)nameI (UniqueID)9 (somenumber)25
(unique)nameH (UniqueID)8 (somenumber)10
答案 0 :(得分:0)
这类似的工作吗?
declare @simpletable table( name varchar(50), uniqueid int, somenumber int)
insert into @simpletable
select 'a', 1, 10
union all
select 'b', 2, 20
union all
select 'c', 3, 30
union all
select 'd', 4, 10
union all
select 'e', 5, 50
union all
select 'f', 6, 35
union all
select 'g', 7, 50
union all
select 'h', 8, 10
union all
select 'i', 9, 25
select top 30 name,uniqueid,somenumber
from
(
select 'ALFA' as name, '1,2,3' as uniqueid, sum(somenumber) as somenumber
from @simpletable
where uniqueid between 1 and 3
union all
select 'BETA' as name, '4,5,6' as uniqueid, sum(somenumber) as somenumber
from @simpletable
where uniqueid between 4 and 6
union all
select name as name, cast(uniqueid as varchar(50)) as uniqueid, somenumber as somenumber
from @simpletable
where uniqueid > 6
) as x
order by somenumber desc