2011-05-02 24 views
0

Fiends請儘快幫助我。真的很感謝在一行中使用Sum函數結合幾行數據並且不對所有行執行此操作

我真的很簡單的表。這三列

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和總結山口C值和組合(4,5,6)給它一個唯一的名稱BETA並求出它們的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

我不知道我的理解。你需要在6個第一排上安排一些特殊的東西,然後正常返回休息!?!? – billy 2011-05-02 02:46:23

+0

您mentionted的結果應該由山坳ç降訂購,但你的例子並不能反映這一點。這是一個錯誤嗎? – TrevDev 2011-05-02 02:57:52

+0

@ billy-是的,我需要執行的東西在6個第一行特殊的,和正常返回休息。謝謝。是的,它是一個錯誤的例子中的條款命令休息是一樣的。有沒有可能在這裏使用CASE語句? – sonu 2011-05-02 13:23:22

回答

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 
相關問題