程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Sql Server 字符串聚合函數

Sql Server 字符串聚合函數

編輯:關於SqlServer
如下表:AggregationTable Id Name 1 趙 2 錢 1 孫 1 李 2 周

如果想得到下圖的聚合結果

Id Name 1 趙孫李 2 錢周

利用SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN是無法做到的。因為這些都是對數值的聚合。不過我們可以通過自定義函數的方式來解決這個問題。
1.首先建立測試表,並插入測試數據:
代碼如下:

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.創建自定義字符串聚合函數
代碼如下:

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.執行下面的語句,並查看結果
代碼如下:

select dbo.AggregateString(Id),Id from AggregationTable
group by Id

結果為:

Id Name 1 趙孫李 2 錢周

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved