MSSQL編號重排常見解決方案

2021-05-11 11:07:45 字數 2530 閱讀 9294

--> title: mssql

編號重排常見解決方案

--> author : wufeng4552

--> date: 2009-11-25 if

object_id

('[tb]')is

notnull

drop

table [tb] go

create

table [tb] (id int

,id1 nvarchar

(6),id2 sql_variant

)insert

into [tb]

select

1,'001'

,null

union all

select

2,'001'

,null

union all

select

3,'001'

,null

union all

select

4,'002'

,null

union all

select

5,'002'

,null

union all

select

6,'002'

,null

--方法

1 update

declare

@id1 varchar

(3),@id2 int

update

[tb] set @id2=

case

when @id1=id1 then @id2+1 else 1 end

,id2=@id2,@id1=id1

select

*from tb

-->

查詢結果 /*

idid1id2

----------- ------ -----

10011

20012

30013

40021

50022

60023

(6 個資料列受到影響)

*/ --方法

2 子查詢

update

t set

id2=(

select

count

(*)from [tb] where id1=t.id1 and id<=t.id)

from

[tb] t

select

*from [tb]

-->

查詢結果 /*

idid1id2

----------- ------ -----

10011

20012

30013

40021

50022

60023

(6 個資料列受到影響)

*/ --方法

3 臨時表 if

object_id

('tempdb..#'

)isnot

null

drop

table #

select

*,cnt=

identity

(int

,0,1)

into # from tb order

by id1,id

update

a set id2=b.cnt-c.cnt+1

from

[tb] a ,# b,

(select

id1,

min(cnt)cnt from # group

by id1)c

where

a.id1=b.id1 and a.id=b.id and b.id1=c.id1

select

*from tb

-->

查詢結果 /*

idid1id2

----------- ------ -----

10011

20012

30013

40021

50022

60023

(6 個資料列受到影響)

*/ --方法

mssql2005 cte ;

with

cte as

(select

*,cnt=

row_number

()over

(partition

by id1 orderby(

select 1))

from [tb])

update

cte set id2=cnt

select

*from tb

-->

查詢結果 /*

idid1id2

----------- ------ -----

10011

20012

30013

40021

50022

60023

(6 個資料列受到影響)

*/

MSSQL求中位數 常見解決方案 整理帖

title mssql求中位數 常見解決方案 整理帖 環境描述 按id和datevalue排序,希望能取到每乙個的中間值,若id總數為奇數,取第 n 1 2個的值 如果是偶數,取第n 2個的值 if object id tb is not null drop table tb gocreate ta...

中文亂碼常見解決方案

亂碼問題是困擾很多程式設計師的問題,為什麼別人的機器是正常的,我的是亂碼的,為什麼本地是正常的,測試環境是亂碼,生產環境是亂碼?注入此類的問題,我們該怎麼解決這個亂碼問題?本文章不斷更新,將自己遇到的,丟擲來,有則改之,無則加勉。首先,明確一點 計算機記憶體中,統一使用unicode進行編碼。既然有...

推薦系統冷啟動問題的常見解決方案

1.冷啟動問題定義 推薦系統需要根據使用者的歷史行為和興趣 使用者未來的行為和興趣,對於bat這類大公司來說,它們已經積累了大量的使用者資料,不發愁。但是對於很多做純粹推薦系統的 或者很多在開始階段就希望有個性化推薦應用的 來說,如何在對使用者一無所知 即沒有使用者行為資料 的情況下進行最有效的推薦...