Sql Server 字符串聚合函數(shù)
發(fā)布日期:2022-02-01 16:17 | 文章來(lái)源:源碼之家
Id | Name |
1 | 趙 |
2 | 錢 |
1 | 孫 |
1 | 李 |
2 | 周 |
如果想得到下圖的聚合結(jié)果
Id | Name |
1 | 趙孫李 |
2 | 錢周 |
利用SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN是無(wú)法做到的。因?yàn)檫@些都是對(duì)數(shù)值的聚合。不過(guò)我們可以通過(guò)自定義函數(shù)的方式來(lái)解決這個(gè)問(wèn)題。
1.首先建立測(cè)試表,并插入測(cè)試數(shù)據(jù):
復(fù)制代碼 代碼如下:
create table AggregationTable(Id int, [Name] varchar(10))
go
insert into AggregationTable
select 1,'趙' union all
select 2,'錢' union all
select 1,'孫' union all
select 1,'李' union all
select 2,'周'
go
2.創(chuàng)建自定義字符串聚合函數(shù)
復(fù)制代碼 代碼如下:
Create FUNCTION AggregateString
(
@Id int
)
RETURNS varchar(1024)
AS
BEGIN
declare @Str varchar(1024)
set @Str = ''
select @Str = @Str + [Name] from AggregationTable
where [Id] = @Id
return @Str
END
GO
3.執(zhí)行下面的語(yǔ)句,并查看結(jié)果
復(fù)制代碼 代碼如下:
select dbo.AggregateString(Id),Id from AggregationTable
group by Id
結(jié)果為:
Id | Name |
1 | 趙孫李 |
2 | 錢周 |
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章