SqlServer自定义聚合函数

sqlserver2017版本包括以上的可以使用string_agg(字段,’,’)函数

sqlserver查询版本:
select @@version

Sql Server自定义聚合函数详细bai步骤

开始->
在这里插入图片描述

输出->
在这里插入图片描述

首先用baiVS2008/VS2005建立一个SQL Server项目,右键解决方案添加新项
在这里插入图片描述
点击“确定”bai按钮后,SQL Server项目会要求连接一个数据库,我们可以选择一个数据库

在这里插入图片描述
然后在工程中加入一个聚合类(joinstr.cs),如图
在这里插入图片描述
joinstr.cs中的最终代码如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text;[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined, //use custom serialization to serialize the intermediate resultIsInvariantToNulls = true, //optimizer propertyIsInvariantToDuplicates = false, //optimizer propertyIsInvariantToOrder = false, //optimizer property    MaxByteSize = 8000), //maximum size in bytes of persisted value
]public struct JoinStr:IBinarySerialize
{private StringBuilder sbIntermediate;public void Init(){sbIntermediate = new StringBuilder();}public void Accumulate(SqlString Value){if (Value == null || Value.ToString().ToLower().Equals("null")){return;}else{sbIntermediate.Append(Value);}}public void Merge(JionStr Group){sbIntermediate.Append(Group.sbIntermediate);}public SqlString Terminate(){return new SqlString(sbIntermediate.ToString());}// This is a place-holder member field#region IBinarySerialize Memberspublic void Read(System.IO.BinaryReader r){sbIntermediate = new StringBuilder(r.ReadString());}public void Write(System.IO.BinaryWriter w){w.Write(this.sbIntermediate.ToString());    }#endregion
}

在编写完上述代码后,可以使用Visual Studio来部署(右向工程,在弹出菜单上选“部署”即可)。

在执行上面的SQL语句之前,需要将SQL Server2005的clr功能打开

在这里插入图片描述
也可以用SQL打开clr功能:

EXEC sp_configure 'clr enabled', 1
RECONFIGURE WITH OVERRIDE
GO

现在可以使用joinstr来聚合字符串了。

select [t_code_role].[role_mc] as '角色',dbo.JoinStr([t_code_right].[right_mc]+',') as '权限' from [t_data_roleright],[t_code_right],[t_code_role] where [t_data_roleright].[role_bm]=[t_code_role].[role_bm] and [t_data_roleright].[right_bm]=[t_code_right].[right_bm] group by [t_code_role].[role_mc]

转载地址:感谢 dyt0801

方案二:https://www.bbsmax.com/A/gVdnmXb15W/

方案三:http://blog.leanote.com/post/colin_xia@yeah.net/sql-server-%E6%B7%BB%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%81%9A%E5%90%88%E5%87%BD%E6%95%B0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#前后端操作json数据

一、前端代码: function initDeptSelect() {var datas {"plant":$(#plantSelect).val()}; //获取某个组件的值,以json格式形式存放var jsonVal JSON.stringify(datas);//将值转化为json对象,必须要做$.ajax({type: post, …

[css] 请说说在什么时候用transition?什么时候使用animation?

[css] 请说说在什么时候用transition?什么时候使用animation? transition 相当于是个过度动画,需要又过度效果才会触发。一般用来做元素的放大缩小、平移旋转等简单的操作。transition 只执行一次,当需要执行多次时,一…

springboot : Failed to decode downloaded font 和 OTS parsing error

大家好,我是烤鸭: 采坑实录,看了很多人跟我有类似问题,但是都没解决我的问题: Failed to decode downloaded font 和 OTS parsing error: 尝试了把woff文件移动到其他可以加载的静态资源文件夹下,还是无法…

PowerDesigner从数据库导入

第一步:PowerDesigner逆向导入MYSQL数据库并显示中文注释 第二步:PowerDesigner互换表结构中NAME和CODE的值 注意事项: 1,mysql导入可能会卡死(我试了好几遍) 2,建议使用sqlserver和oracle…

根据时间戳 统计每天用户的金额总数

SELECT FROM_UNIXTIME(add_time, %Y-%m-%d) AS date, sum(price), user_idFROM ryc_order_courseWHERE add_time ! GROUP BY date, user_id 转载于:https://www.cnblogs.com/guolc/p/9934557.html

[css] 说说响应式设计(responsive design)和自适应设计(adaptive design)的区别?

[css] 说说响应式设计(responsive design)和自适应设计(adaptive design)的区别? 响应式是通过视口分辨率识别不同客户端展现不同的布局和内容,一套代码。自适应是通过识别时候分辨率针对不同设备返回不同的页面,多套代码。个人简介 我是歌…

达梦数据库常用SQL

转载请注明原文链接地址 --达梦数据库创建表 create table TEST_TABLE(scid varchar2(10) primary key,scname varchar2(20), scsm number(6), scprice number(4,2) );---------------------当前用户-------------------------- --达梦数据库-获取…

insert ignore duplicate key

Insert into T1select * from T2 where NOT EXISTS (select 1 from T1 X where X.GUIDT2.GUID);转载于:https://www.cnblogs.com/kakaisgood/p/9935028.html

【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;想把json数据直接转成对象&#xff0c;其中有个属性是list<T>&#xff1a; 异常 1 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList o…

[css] 什么是脱离文档流?有什么办法可以让元素脱离标准的文档流?

[css] 什么是脱离文档流&#xff1f;有什么办法可以让元素脱离标准的文档流&#xff1f; 文档流就是指元素在 HTML 文档中位置顺序决定排布的过程。HTML 元素有块级元素和行内元素&#xff0c;块级元素一个占一行&#xff0c;行内元素在一行内依次排布。整体元素从上到下的排布…

解决 org.apache.hadoop.io.nativeio.NativeIO$POSIX.stat异常

原因是我的maven使用的hadoop版本是3.1.2&#xff0c; 但是系统环境变量配置的hadoop的版本是3.0.0&#xff0c; 所以造成这个异常。 解决方案&#xff1a;将两个版本改成一致&#xff0c;如果修改的是系统环境变量&#xff0c;请重启电脑。

[Leetcode 376]摇摆序列 Wiggle Subsequence

【题目】 A sequence of numbers is called a wiggle sequence if the differences between successive numbers strictly alternate between positive and negative. The first difference (if one exists) may be either positive or negative. A sequence with fewer than t…

java 实现 常见排序算法(三)快速排序

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下基础排序算法之快速排序。快速排序是内部排序&#xff08;基于比较排序&#xff09;中最好的比较算法。 1. 快速排序&#xff1a; 原理&#xff1a;在要排的数&#xff08;比如数组A&#xff09;中选择一个中心值k…

[css] 请问background-attachmentn属性有什么用途?

[css] 请问background-attachmentn属性有什么用途&#xff1f; background-attachment: fixed / scroll / local&#xff1a; 设置背景图像是否固定或者随着页面的其余部分滚动。fixed: 背景图片不会随着页面的滚动而滚动。scroll: 背景图片随着页面的滚动而滚动&#xff0c;这…

解决org.apache.hadoop.io.nativeio.NativeIOException: 当文件已存在时,无法创建该文件。

Hadoop在本地运行的时候总是出现这个异常&#xff0c;虽然这个异常不影响代码运行&#xff0c;但是看着很不爽 1&#xff0c;找到log4j.properties文件&#xff0c;查看log4j.rootLogger&#xff0c;但是却没有debug log4j.rootLogger info,stdout2&#xff0c;查看pom.xm…

两台TP-LINK路由器串联

TP-LINK的交换机LAN口连接电脑&#xff0c;设置交换机IP为192.168.2.1&#xff0c;为以后方便管理不设置自动获取IP地址&#xff0c;不设置DHCPLAN口连接路由器网线&#xff0c;不是WAN口其他电脑也连接LAN口&#xff0c;即可上网 https://www.192ly.com/qiu-zhu/two-routers-c…

[css] 移动页面底部工具条有3个图标,如何平分?在设置边框后最后一个图标掉下去了怎么办?

[css] 移动页面底部工具条有3个图标&#xff0c;如何平分&#xff1f;在设置边框后最后一个图标掉下去了怎么办&#xff1f; flex-wrap nowrap, 一般flex默认就是nowrap white-space:nowrap是针对行内元素设置的,默认为normal个人简介 我是歌谣&#xff0c;欢迎和大家一起交流…

springboot websocket

大家好&#xff0c;我是烤鸭&#xff1a; 今天想分享一下springbootwebsocket。 之前接到一个需求&#xff0c;需要在页面监听后台的数据&#xff08;输入邮箱后&#xff0c;需要用户打开邮箱&#xff0c;页面监听用户是否点击激活邮件&#xff09;。之前的实现方式&#xff0c…

[网络开发]同步与线程安全方案

方案&#xff1a;synchronized,volatileCAS&#xff08;compareAndSet&#xff09;,atomic包&#xff0c;Lock接口 java同步和IO同步的对比&#xff1a; 都是同步异步的方案问题&#xff0c;一个操作的是java代码(实际是堆和方法区)&#xff0c;一个操作的是TCP RecvBuffer而已…

[css] 说下你对background-size的理解,它有什么运用场景?

[css] 说下你对background-size的理解&#xff0c;它有什么运用场景&#xff1f; 设置背景图的大小&#xff0c;一般用来设置背景图的大小。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 …