MSSQL 字段分组拼接
方法1:缺点,不去重,不去空;见表1
with t as(
select 'A' parent, 'A1' child union all
select 'A', 'A1' union all
select 'A', '' union all
select 'A', null union all
select 'A', 'A2' union all
select 'B', 'B1' union all
select 'B', 'B2' union all
select 'C', 'C1' union all
select 'C', 'C2'
)
SELECT parent,
STUFF(
(
SELECT ','+ child FROM t a WHERE b.parent = a.parent FOR XML PATH('')
),1 ,1, '') children
FROM t b
GROUP BY parent
表1:
方法2:通过游标来处理,去重,去空。见表2
--定义游标并进行合并处理
declare @t table(parent varchar(100),child varchar(100))--定义结果集表变量
declare my_cursor cursor local for
with t1 as(
select 'A' parent, 'A1' child union all
select 'A', 'A1' union all
select 'A', '' union all
select 'A', null union all
select 'A', 'A2' union all
select 'B', 'B1' union all
select 'B', 'B2' union all
select 'C', 'C1' union all
select 'C', 'C2'
)
select parent, child from t1 order by parent, child
declare @parent_old varchar(100) , @parent varchar(100) , @child varchar(100), @s varchar(100)
open my_cursor
fetch my_cursor into @parent , @child
select @parent_old = @parent , @s=''
while @@FETCH_STATUS = 0
begin
if @parent = @parent_old
begin
if charindex(@child, @s)=0 and @child<>''
select @s = @s + ',' + cast(@child as varchar)
end else
begin
insert @t values(@parent_old , stuff(@s,1,1,''))
select @s = ',' + cast(@child as varchar) , @parent_old = @parent
end
fetch my_cursor into @parent , @child
END
insert @t values(@parent_old , stuff(@s,1,1,''))
close my_cursor
deallocate my_cursor
select * from @t
表2:
MSSQL 字段分组拼接的更多相关文章
- MySql 字段分组拼接
drop table if exists T_Test; create table T_Test select 'A' parent, 'A1' child union all select 'A', ...
- 分组拼接字符串,GROUP_CONCAT
背景 一年过的很快,文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了,他们工作干的很不错,performance 分别是 4 和 5 新需求来了,静悄悄的来了!!! 领导想要查看每个 ...
- mysql GROUP_CONCAT 可以将分组的字段进行拼接处理.
GROUP_CONCAT 可以将分组的字段进行拼接处理. SELECT g.id, g.merchant_id, g. NAME, g.introduction, g.cover_pic, g.pla ...
- SQL Server 按某一字段分组 取 最大 (小)值所在行的数据
SQL Server 按某一字段分组 取 最大 (小)值所在行的数据 -- 按某一字段分组 取 最大 (小)值所在行的数据 -- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23 ...
- 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码
2013-9-15 1. CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...
- .Net Linq与Lambda表达式中GroupBy以多个字段分组
一.引入 基本上熟悉C#语言的没有不知道Lambda表达式的,其对于数据的处理真的是太方便了.其中分组处理的GroupBy方法在List中的使用非常广泛.正式近期一个功能需求中又遇到了,而且是需要Gr ...
- js将json格式的list转换为按某个字段分组的map数组
这几天做的微信公众号项目中,出现了需要将list分组显示的需求,解决方法如下 var data = [{ "id": "32b80b76-a81e-4545-8065-1 ...
- js 按字段分组
var data = [{"id":"32b80b76-a81e-4545-8065-1e7c57180801","userId":&quo ...
- mysql按某一字段分组取最大(小)值所在行的数据
mysql按某一字段分组取最大(小)值所在行的数据 mysql技巧--按某一字段分组取最大(小)值所在行的数据,这是mysql数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结 ...
随机推荐
- filezilla无法登陆ubuntu虚拟机
一般情况下,是新安装的虚拟机没有安装ssh造成的 进入虚拟机控制台,输入 sudo apt-get openssh-server 回车 等安装完成即可登陆.
- ASP.NET Aries 高级开发教程:表单检测字段是否已存(番外篇)
前言: 昨天刚好有人问了这个问题,因此就针对这个问题,补上一篇吧. 正文: 如图:在用户编辑列表中,用户名是会自动检测是否已存在的. 具体对应的Html内容如下: <label><e ...
- Mysql的安装、配置、优化
Mysql的安装.配置.优化 安装步骤 1.先单击中的安装文件,如果是win7系统,请选择以管理员的方式运行. 2.大概需要30秒的时间,开始进入安装界面.请先把标红的打勾,好进行下一步的动作. 3. ...
- Postman文件上传
1:请求Url 2:选择消息体 3:选择表单参数 4:填写参数KEY-VALUE,记得打钩 5:Send发送请求
- 线程优先级,设置,setPriority()方法
package seday08.thread;/** * @author xingsir * 线程优先级 * 线程启动后纳入到线程调度,线程时刻处于被动获取CPU时间片而无法主动获取.我们可以通过调整 ...
- Java生鲜电商平台-服务化后的互联网架构实战(针对生鲜电商小程序或者APP)
Java生鲜电商平台-服务化后的互联网架构实战(针对生鲜电商小程序或者APP) “微服务架构”的话题非常之火,很多朋友都在小窗我,说怎么做服务化?解答“怎么做”之前,先得了解“为什么做”. 画外音:做 ...
- swiper 轮播中常用的效果,持续更新
swiper一款非常好用的轮播插件,支持移动端和PC端,用过很多次了,这次简单的总结一下.方便以后查找使用,说明一下,下面的例子是基于swiper 4.0+版本的,如果你是其他的版本,请自行前往官网查 ...
- js Set对象
1.将数组转换成Set对象 let arr1 = new Set([1,2,3,4]) console.log(arr1) //{1,2,3,4} 2.数组去重 let arr2 = new Set( ...
- [转]VB.NET DataTable Select Function
本文转自:https://www.dotnetperls.com/datatable-select-vbnet VB.NET DataTable Select Function This VB.NET ...
- C#后台架构师成长之路-Orm篇体系
成为了高工,只是完成体系的熟练,这个时候就要学会啃一些框架了... 常用Orm底层框架的熟悉: 1.轻量泛型的DBHelper,一般高工都自己写的出来的 2.EF-基于Linq的,好好用 3.Keel ...