通過Sql實現根據分組合併指定列內容的查詢

2021-07-03 19:33:28 字數 1427 閱讀 1269

問題:最近在做乙個專案的時候,遇到這樣乙個要求,模擬要求如下: 

id  sname

張三李四

劉六王五

要的結果是

id name

張三,李四

劉六,王五

即按id組查詢,並將相同的id對應sname內容通過逗號合併

解決思路:

通過傳遞不同的id給函式,查詢出組合的sname並返回。

--建立測試表

if not exists(select * from sysobjects where id=object_id(n'studentsinfo') and objectproperty(id,n'isusertable')=1)

create table studentsinfo

( id int,

sname nvarchar(20))go

--新增測試資料

insert into studentsinfo values (1,'張三')

insert into studentsinfo values (1,'李四')

insert into studentsinfo values (2,'劉六')

insert into studentsinfo values (2,'王五')

go--建立函式

if exists(select * from sysobjects where id=object_id(n'getstudentsinfonamesbyid') and objectproperty(id,n'isscalarfunction')=1)

drop function getstudentsinfonamesbyid

gocreate function getstudentsinfonamesbyid(@id int)

returns nvarchar(4000)

asbegin

declare @snames nvarchar(4000)

set @snames = ''

select @snames = @snames+','+sname from studentsinfo where id = @id

return stuff(@snames,1,1,'')

endgo

--查詢

select id,dbo.getstudentsinfonamesbyid(id) as snames from studentsinfo group by id

SQL縱列單元值分組合併

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

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

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

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

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