學習筆記 SQL語句處理分組合併

2021-09-06 02:27:07 字數 2043 閱讀 1610

今天在博問上看到乙個sql語句需求:

表結構 

id      name

1       羅濤

1       濤帥帥

2       劉亮

2       亮哥

2       亮傻 

要得出結果

id         name

1       羅濤,濤帥帥

2       劉亮,亮哥,亮傻 

這是乙個典型的分組合併的需求,一般有兩種方法,一是寫乙個函式處理,二是用xml for path方法,**如下:1--

建立測試環境

2create

table

bwtest3(

4id 

int,

5name 

varchar(10

)6)7

go8--插入資料

9insert

bwtest 

values(1

,'羅濤'

)    

10insert

bwtest 

values(1

,'濤帥帥')11

insert

bwtest 

values(2

,'劉亮'

)12insert

bwtest 

values(2

,'亮哥'

)13insert

bwtest 

values(2

,'亮傻'

)14go15

16--

方法一:函式法

17--

建立函式

18create

function

getb(

@idint)19

returns

varchar

(8000)20

as21

begin

22declare

@svarchar

(8000)23

set@s=''

24select@s=

@s+',

'+name 

from

bwtest 

whereid=

@id;

25return

@s26

end27

go28

29--

呼叫30

select

id, 

substring

(dbo.getb(id),2,

len(dbo.getb(id))-1

) as

name 

from

bwtest 

group

byid;

3132

33--

方法二:利用xml path法

34select

id,stuff

((select',

'+name 

from

bwtest 

whereid=

bw.id 

forxml path(

'')),1,

1,'') 

asname 

from

bwtest bw 

group

byid

3536

37--

刪除測試環境

38drop

function

getb

39drop

table

bwtest

40--

結果41

/*42

id          name

43----------- --------

441           羅濤,濤帥帥

452           劉亮,亮哥,亮傻

46*/

利用xml for path 合併分組資訊

sql stuff用法

sql擷取字串

學習筆記 SQL語句處理分組合併

今天在博問上看到乙個sql語句需求 表結構 id name 1 羅濤 1 濤帥帥 2 劉亮 2 亮哥 2 亮傻 要得出結果 id name 1 羅濤,濤帥帥 2 劉亮,亮哥,亮傻 這是乙個典型的分組合併的需求,一般有兩種方法,一是寫乙個函式處理,二是用xml for path方法,如下 1 建立測試...

分組字元合併SQL語句

描述 將如下形式的資料按id欄位合併value欄位。id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id value 1 aa,bb 2 aaa,bbb,ccc 即 group by id,求 value 的和 字串相加 1 sql2000中只能用自定義的函式...

SQL縱列單元值分組合併

原表 id,task id,current unit id 42688645,30404829,104 42688647,30404829,128 42688648,30404829,117 42688650,30404829,118 42688652,30404829,119 42688653,3...