合併多行查詢資料到一行

2021-07-06 03:57:42 字數 2033 閱讀 1901

示例表 tb 資料如下

id value

—————

1 aa

1 bb

2 aaa

2 bbb

2 ccc

第一種

select

id,

[val]=

( select

[value]+

','from

tb as

b

where

b.id

=a.id

forxml path(

'') )

from

tb as

a

第一種顯示結果 

1 aa,bb, 

1 aa,bb, 

2 aaa,bbb,ccc, 

2 aaa,bbb,ccc, 

2 aaa,bbb,ccc,

第二種

select

id,

[val]=

( select

[value]+

','from

tb as

b

where

b.id

=a.id

forxml path(

'') )

from

tb as

a

group

byid

第二種顯示結果 

1 aa,bb, 

2 aaa,bbb,ccc,

第三種 (用stuff函式替換掉首端的逗號)

select

id,

[val]=

stuff

( (select',

'+[value

]from

tb as

b

where

b.id

=a.id

forxml path(

'')) ,

1

, 1

, '')

from

tb as

a

group

byid

第三種顯示結果 

1 aa,bb 

2 aaa,bbb,ccc

stuff 函式將字串插入另一字串。它在第乙個字串中從開始位置刪除指定長度的字元;然後將第二個字串插入第乙個字串的開始位置。

stuff ( character_expression , start , length ,character_expression_insert )

第四種 (用replace函式將所有空格替換成逗號)

select

id,

[val]=

replace

( (select

[value]as

[data()

]from

tb as

b

where

b.id

=a.id

forxml path(

'')) , ''

, ','

)

from

tb as

a

group

byid

結果與第三種一樣。

解析:[data()] 這裡據說是起到乙個類似陣列的作用,具體用法還要再查。

如果外圍不用replace函式包住,則返回的結果是 aaa bbb ccc ,每項之間有空格,所以最後用replace函式將所有空格替換成逗號。

mysql多行合併一行,一行拆分多行

資料 建表語句 drop table if exists 品牌 create table 品牌 id int 0 not null,品牌 varchar 255 character set utf8 collate utf8 general ci null default null engine i...

SQL查詢多行合併成一行

問題描述 無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式,所以,當我們在處理下列要求時,會比較麻煩 有表tb,如下 id value 1 aa 1 bb 2 aaa 2 bbb 2 ccc 需要得到結果 id values 1 aa,bb 2 aaa,bbb,ccc...

pandas實現多行合併一行 一行拆分多行

import pandas as pd 構造資料 data pd.dataframe 合併資料 合併前 合併後 import pandas as pd 構造資料 data pd.dataframe 拆分資料 data pinpai data 品牌 str.split expand true data...