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数据库程序员经常用到的在处理一些报表数据时候可以活用!那么猎微网将总结 ...
随机推荐
- 《Web Development with Go》Mangodb查询一条记录
select加where package main import ( "fmt" "log" "time" "gopkg.in/m ...
- 从eslint规则学点JavaScript知识
在知识星球陆续发了些eslint小知识,意在通过eslint知识去了解规则内部的原理,汇总在此: prefer-const 含义:始终用const定义你从不修改的变量,如果会被修改则使用let,永不使 ...
- 在ubuntu18.04上使用OpenSSL生成自签名认证基本流程
为了使系统支持https模式,首先我们要使能ssl模式. 命令如下: sudo a2enmod ssl sudo systemctl restart apache2 接下来我们要生成一个SSL/TLS ...
- centos7下安装客户端rabbitmq9.0
下载目前最新rabbitmq客户端版本: wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz php扩展 : wget ht ...
- JavaScript 日期格式
有四种 JavaScript 日期输入格式: 类型 实例 ISO 日期 "2018-02-19" (国际标准) 短日期 "02/19/2018" 或者 &quo ...
- 新建GitHub仓库与删除
一.登录GitHub创建仓库 ,步骤如下: 1.点击新建 2.填写仓库名称等 3.创建完成 二.关联已有的本地项目(没有需要关联的本地项目,可以直接从刚刚创建的GitHub仓库clone) 1.到本地 ...
- Github访问速度很慢的原因,以及解决方法
1,CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数据时,不需要直接从源站获取,通过CDN对于数 ...
- 使用docker部署filebeat和logstash
想用filebeat读取项目的日志,然后发送logstash.logstash官网有相关的教程,但是docker部署的教程都太简洁了.自己折腾了半天,踩了不少坑,总算是将logstash和filebe ...
- Oracle查看 open_cursors 和 session_cached_cursors
本文转自 http://blog.itpub.net/25583515/viewspace-2152997/ 查看当前session已使用的最大open cursor数 和cached cursor数 ...
- avd manger创建的虚拟机启动不起来,或者启动起来后黑屏
最近鼓捣安卓虚拟机,整的都差点重装系统,刚开始下载了genymotion_vbox,装完以后要在vbox中导入一个虚拟机,结果我导入完,虚拟机怎么也启动不了,然后各种找办法无果,最后重启电脑发现电脑也 ...