問題:最近在做乙個專案的時候,遇到這樣乙個要求,模擬要求如下:
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 建立測試...