Sql Server 字符串聚合函數(shù)
Id | Name |
1 | 趙 |
2 | 錢 |
1 | 孫 |
1 | 李 |
2 | 周 |
如果想得到下圖的聚合結(jié)果
Id | Name |
1 | 趙孫李 |
2 | 錢周 |
利用SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN是無法做到的。因?yàn)檫@些都是對數(shù)值的聚合。不過我們可以通過自定義函數(shù)的方式來解決這個問題。
1.首先建立測試表,并插入測試數(shù)據(jù):
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ù)
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í)行下面的語句,并查看結(jié)果
select dbo.AggregateString(Id),Id from AggregationTable
group by Id
結(jié)果為:
Id | Name |
1 | 趙孫李 |
2 | 錢周 |
相關(guān)文章
mssql中得到當(dāng)天數(shù)據(jù)的語句
mssql中得到當(dāng)天數(shù)據(jù)的語句...2007-08-08將ACCESS數(shù)據(jù)庫遷移到SQLSERVER數(shù)據(jù)庫兩種方法(圖文詳解)
這篇文章介紹了ACCESS數(shù)據(jù)庫遷移到SQLSERVER數(shù)據(jù)庫兩種方法,有需要的朋友可以參考一下2013-10-10MySQL 數(shù)據(jù)庫 source 命令詳解及實(shí)例
這篇文章主要介紹了MySQL 數(shù)據(jù)庫 source 命令詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-06-06SQLite3數(shù)據(jù)庫的介紹和使用教程(面向業(yè)務(wù)編程-數(shù)據(jù)庫)
這篇文章主要介紹了SQLite3數(shù)據(jù)庫的介紹和使用(面向業(yè)務(wù)編程-數(shù)據(jù)庫),本文從SQLite3的庫的獲取、工程管理、SQL語句介紹、C語言編程四個角度闡述了SQLite3數(shù)據(jù)庫的實(shí)際應(yīng)用,需要的朋友可以參考下2023-05-05SqlServer實(shí)現(xiàn)類似Oracle的before觸發(fā)器示例
本節(jié)主要介紹了SqlServer如何實(shí)現(xiàn)類似Oracle的before觸發(fā)器,需要的朋友可以參考下2014-08-08SQL Server跨服務(wù)器操作數(shù)據(jù)庫的圖文方法(LinkedServer)
這篇文章主要介紹了SQL Server跨服務(wù)器操作數(shù)據(jù)庫的方法,通過鏈接服務(wù)器(LinkedServer)實(shí)現(xiàn)SQL Server遠(yuǎn)程鏈接MySql等數(shù)據(jù)庫,需要的朋友可以參考下2022-10-10通過Windows批處理命令執(zhí)行SQL Server數(shù)據(jù)庫備份
這篇文章主要介紹了通過Windows批處理命令執(zhí)行SQL Server數(shù)據(jù)庫備份的相關(guān)資料,需要的朋友可以參考下2016-03-03