SQL Server2000和2005中合併列值

2021-05-22 04:42:46 字數 1882 閱讀 2763

有表

tb, 如下:

id    value

—–——

1     aa

1     bb

2     aaa

2     bbb

2     ccc

需要得到結果:

id     values

—————–

1      aa, bb

2      aaa, bbb, ccc

在sql

server2000

中我們處理的方式一般都是用自定義函式去處理:

舉例如下:

create

function dbo. f_str( @id int)

returns

varchar

( 8000) as

begin

declare

@r varchar

( 8000)

set@r=''

select

@r= @r+

','+

value

from tb where id= @id

return

stuff

( @r, 1, 1,'')

end go

select

id,values

= dbo. f_str( id)

from tb group

by id

在sql

server2005

中,這種統計有了一種新的方法,直接使用語句呼叫

sql2005

的函式實現:

舉例如下:

–示例資料

declare

@t table

( id int

,value

varchar

( 10))

insert

@t select 1,

'aa'

union all

select 1,

'bb'

union all

select 2,

'aaa'

union all

select 2,

'bbb'

union all

select 2,

'ccc'

–查詢處理

select*

from(

select

distinct id

from@t

)aouter

select

[values]=

stuff

(replace

(replace(

( select

value

from @t n

where

id = a. id

forxmlauto ),

',','

),'''/>',''

), 1, 1,'')

)n /*–結果

id          values

———–—————-

1           aa,bb

2           aaa,bbb,ccc

(2 行受影響)

–*/

最近從csdn

上又發現了一種方法!

declare

@a varchar

( 100)

select

@a=coalesce

( @a+

'/',

'')+ pname from hpinf where perid like

'207%'

select@a

SQL Server 2000學習筆記(2)

今天學習的是時間函式 日期函式的使用 datepart的格式 datepart abbreviations year yy,yyyy quarter qq,q month mm,m dayofyear dy,y day dd,d week wk,ww weekday dw hour hh minut...

sql server 2000 完全解除安裝 2

引用 發現學校裡的sql server 2000資料庫損壞了重灌後都發生了同樣的問題,那就是安裝sql server資料庫不成功。原因 即使你通過控制面板裡的 新增 刪除程式 正常的解除安裝sql server資料庫,但是,sql server還是沒有完全解除安裝乾淨,還需要手工進行一些操作。因此重...

sql server 2000 完全解除安裝 2

引用 發現學校裡的sql server 2000資料庫損壞了重灌後都發生了同樣的問題,那就是安裝sql server資料庫不成功。原因 即使你通過控制面板裡的 新增 刪除程式 正常的解除安裝sql server資料庫,但是,sql server還是沒有完全解除安裝乾淨,還需要手工進行一些操作。因此重...