有戲 中國移動做網際網路能否堅持到最後?

2021-04-14 11:53:57 字數 1821 閱讀 9002

--示例資料

create table 表(id int,num int)

insert 表 select 1,2

union all select 2,3

union all select 3,2

union all select 4,2

union all select 5,12

union all select 6,2

union all select 7,1

union all select 8,5

union all select 9,1

go/*--問題說明:

輸入分組引數,比如輸入 "3,6" ,實現按 id<=3,3

<=6,id>6 分組查詢

輸入分組引數,比如輸入 "2,5,8" ,實現按 id<=2,2

<=5,5

<=8,id>8 分組查詢

--*/

--查詢的儲存過程

create proc p_qry

@numlist varchar(1000)

asset nocount on

declare @t table(id int identity,組 varchar(10),a int,b int)

declare @i int,@pnum varchar(10)

select @i=charindex(',',@numlist+',')

,@pnum=left(@numlist,@i-1)

,@numlist=stuff(@numlist,1,@i,'')

,@i=charindex(',',@numlist)

insert @t select 'id<='+@pnum,null,@pnum

while @i>0

begin

insert @t select @pnum+'

<='+left(@numlist,@i-1),@pnum,left(@numlist,@i-1)

select @pnum=left(@numlist,@i-1)

,@numlist=stuff(@numlist,1,@i,'')

,@i=charindex(',',@numlist)

endinsert @t select 'id>'+@numlist,@numlist,null

select b.組,num=sum(a.num)

from 表 a,@t b

where case

when b.a is null then case when a.id<=b.b then 1 else 0 end

when b.b is null then case when a.id>b.a then 1 else 0 end

else case when a.id>b.a and a.id<=b.b then 1 else 0 end

end=1

group by b.組

order by min(b.id)

go--呼叫儲存過程進行查詢

exec p_qry '2,5,8'

go--刪除測試

drop table 表

drop proc p_qry

/*--測試結果

組          num        

有戲 中國移動做網際網路能否堅持到最後?

鄭昀 20070709 譚晨輝說到 移動做網際網路基本沒戲 列舉了五大內在邏輯原因 1.自身網際網路創新能力的弱智 2.事實上細分領域的難以壟斷性 3.競爭環境帶來的壓力 4.和監管的壓力 5.技術上帶來通道的開放性 恰好下午我和當當網的王洪濤也說到這個問題,不過我的理由很簡單,也許移動有著不可小視...

有戲 中國移動做網際網路能否堅持到最後?

鄭昀 20070709 譚晨輝說到 移動做網際網路基本沒戲 列舉了五大內在邏輯原因 1.自身網際網路創新能力的弱智 2.事實上細分領域的難以壟斷性 3.競爭環境帶來的壓力 4.和監管的壓力 5.技術上帶來通道的開放性 恰好下午我和當當網的王洪濤也說到這個問題,不過我的理由很簡單,也許移動有著不可小視...

有戲 中國移動做網際網路能否堅持到最後?

鄭昀 20070709 譚晨輝說到 移動做網際網路基本沒戲 列舉了五大內在邏輯原因 1.自身網際網路創新能力的弱智 2.事實上細分領域的難以壟斷性 3.競爭環境帶來的壓力 4.和監管的壓力 5.技術上帶來通道的開放性 恰好下午我和當當網的王洪濤也說到這個問題,不過我的理由很簡單,也許移動有著不可小視...