---------------------------------sql server多行資料拼接 ---------------------------------------
create table aaa(id int,typ varchar(20),code varchar(10))
insert into aaa values(1,'鉛筆','0001')
insert into aaa values(2,'鉛筆','0002')
insert into aaa values(3,'鉛筆','0003')
insert into aaa values(4,'鋼筆','0004')
insert into aaa values(5,'鋼筆','0005')
insert into aaa values(6,'鋼筆','0004')
insert into aaa values(7,'原子筆','0007')
insert into aaa values(8,'原子筆','0008')
insert into aaa values(9,'原子筆','0007')
----drop table aaa
-- select * from aaa
select code from aaa where typ='鉛筆'
select code from aaa where typ='鋼筆' group by code
--需求結果:
--型別
彙總--鋼筆 0004,0005
--鉛筆 0001,0002,0003
--原子筆 0007,0008
---1.使用了游標的自定義函式
drop function getcode
create function getcode(@typ varchar(20))
returns varchar(30)
asbegin
declare @code varchar(10)
declare @temp varchar(30)
declare @num int
declare mycur cursor for (select code from aaa where typ=@typ group by code)
open mycur
fetch next from mycur into @code
set @num=0
while @@fetch_status=0
begin
if @num=0
begin
set @temp=@code
endelse
begin
select @temp=@temp+'、'+@code
endset @num=@num+1
fetch next from mycur into @code
endclose mycur
deallocate mycur
return @temp
endselect aaa.typ as 型別,dbo.getcode(aaa.typ)as 彙總
from aaa group by aaa.typ
---2.用自定義函式做的
create function getcode(@typ varchar(20))
returns nvarchar(200)
asbegin
declare @str1 varchar(50)
set @str1=''
select @str1=@str1+'、'+code from aaa where typ=@typ group by code
select @str1=right(@str1,len(@str1)-1)
--或select @str1=@str1+code+'、' from aaa where typ=@typ group by code
--select @str1=left(@str1,len(@str1)-1)
return @str1
end-- drop function getcode
select typ,dbo.getcode(typ) from aaa group by typ
-- select * from aaa
結果:typ (無列名)
鋼筆 0004、0005
鉛筆 0001、0002、0003
原子筆 0007、0008
SQL自定義函式
建立使用者自定義函式 標量函式 create function dbo.bmrs bmh as int returns int asbegin declare bmrs int select bmrs count 工號 from 銷售人員where 部門號 bmh return bmrs endgo...
sql 自定義函式
delimiter create definer function woshow try aid bigint returns bigint 20 language sql not deterministic sql security comment string begin if aid 0 th...
SQL自定義函式
自定義函式與儲存過程的區別 存在的意義 1.能夠在select等sql語句中直接使用自定義函式,儲存過程不行。2.自定義函式可以呼叫其他函式,也可以呼叫自己 遞迴 3.可以在表列和check 約束中使用自定義函式來實現特殊列或約束 4.自定義函式不能有任何 函式 是指對具有函式外作用域 例如資料庫表...