如下表:AggregationTable
Id |
Name |
1 |
趙 |
2 |
錢 |
1 |
孫 |
1 |
李 |
2 |
周 |
如果想得到下圖的聚合結(jié)果
利用SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN是無法做到的。因為這些都是對數(shù)值的聚合。不過我們可以通過自定義函數(shù)的方式來解決這個問題。
1.首先建立測試表,并插入測試數(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í)行下面的語句,并查看結(jié)果
復(fù)制代碼 代碼如下:
select dbo.AggregateString(Id),Id from AggregationTable
group by Id
結(jié)果為:
您可能感興趣的文章:- Sql Server 開窗函數(shù)Over()的使用實例詳解
- SQL Server 2012 開窗函數(shù)
- sql server如何利用開窗函數(shù)over()進行分組統(tǒng)計
- MySQL中聚合函數(shù)count的使用和性能優(yōu)化技巧
- MySql 中聚合函數(shù)增加條件表達式的方法
- SQL中的開窗函數(shù)詳解可代替聚合函數(shù)使用