首页 > 数据库 >Sql Server 字符串聚合函数

Sql Server 字符串聚合函数

时间:2023-11-10 15:06:56浏览次数:54  
标签:COUNT 聚合 union Server Str Sql 字符串 Id select

Sql Server 有如下几种聚合函数SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN,但是这些函数都只能聚合数值类型,无法聚合字符串。

如下表: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

 

http://www.jb51.net/article/18772.htm

http://ephon.spaces.live.com/blog/cns!796FAD06E2C0A525!732.entry?wa=wsignin1.0&sa=144422700

http://soft.zdnet.com.cn/software_zone/2009/1202/1532996.shtml

字符串连接聚合函数



标签:COUNT,聚合,union,Server,Str,Sql,字符串,Id,select
From: https://blog.51cto.com/emanlee/8299397

相关文章

  • Sql server基础使用(五):视图
    对所学Sqlserver知识进行一下记录总结,某些用法之间还可以关联使用,欢迎补充和讨论。本人比较懒,结果的截图暂时就先不传了,什么时候想起来再说吧~~视图其实理解起来很简单,就好像是把复杂的查询语句查询出来的数据封装到一个临时表里面(知识我自己的理解~~)1.创建视图我所知的有2-3中......
  • Sql Server根据表生成insert语句
    Createproc[dbo].[P_BackupsCompanyData](@tablenamevarchar(256),@wherevarchar(256))asbeginsetnocountondeclare@sqlstrvarchar(max)declare@sqlstr1varchar(max)declare@sqlstr2varchar(max)select@sqlstr='select''insertinto�......
  • 为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4
    StoneDB开源地址https://github.com/stoneatom/stonedb设计:小艾审核:丁奇、李浩编辑:宇亭作者:王若添中国科学技术大学-软件工程-在读硕士、StoneDB内核研发实习生performance_schema简介MySQL启动后会自动创建四个databasemysql>showdatabases;+--------------------+|Da......
  • JAVA生成16位唯一字符串
      importlombok.extern.slf4j.Slf4j;importjava.util.Random;importjava.util.UUID;publicclassRandomUtils{privatestaticlonggetRandom(longn){longmin=1,max=9;for(inti=1;i<n;i++){min*=1......
  • 实现MyBatisPlus自定义sql注入器
    目标:新增mysql下的插入更新的语法INSERTINTO%s%sVALUES%sONDUPLICATEKEYUPDATE%s新增方法类,新增的方法名称为insertOrUpdate和insertOrUpdateBatch方法,但其mapper层的方法名为insertOrUpdate方法importcom.baomidou.mybatisplus.annotation.IdType;importcom.b......
  • MySQL导入导出数据表容量的一个问题场景
    朋友提了一个MySQL数据导出导入的问题。问题描述:从源库(兼容MySQL协议的TDSQL,selectversion()=5.7,test表字符集是utf8,test是个分区表)通过如下指令,导出一份数据,SQL格式的,文件6G,mysqldump-hx.x.x.x-P3306-uroot-proot--databasesdbtest--tablestest--complete-insert--s......
  • POSTGRESQL 如何用系统函数来诊断权限问题
    开发人员很少关注于数据库系统的权限,而POSTGRESQL相对于MYSQL来说,他的权限是复杂的,尤其在一些规范的企业,对于权限的要求很高,而随时掌握账号对于数据库OBJECTS的权限的状态,在很多项目中是乙方需要知道该怎么做的。我们从上到下,一一给大家进行演示,你的用户组需要针对PG中不同的数据......
  • String 字符串
      比较String,不能用==号,而要用equals()方法。==号比较的是地址,equals()比较的是字符串里的值。 ......
  • mysql 查询报错Expression #1 of SELECT list is not in GROUP BY clause and contain
    这个错误是由于MySQL的新版本中默认开启了ONLY_FULL_GROUP_BY模式,即在GROUPBY语句中的SELECT列表中,只能包含分组或聚合函数,不能包含其他列。而你的查询语句中出现了一个列senior_two.score.student_id,它既没有被分组也没有被聚合,因此MySQL报出了这个错误。5.7版本以下不......
  • String字符串常用方法
         ......