sql分组合并字段重复项sql for xml path
-------------------------(情景描述)
在我们处理数据时,可能会碰到这种情景:
Id Name
1 a,b
2 a
1 a,b,c
对于上面的表数据要求合并同类项Name,得到结果:
1 a,b,c
2 a
-------------------------(解决方案)
我们通过sql for xml path来合并Name,并写一个标量函数来去掉重复项:
1) 创建标量函数:
CREATE FUNCTION F_getStr(@oriStr nvarchar(30))
returns nvarchar(30)
as
begin
declare @str nvarchar(30),@temp nvarchar(30)
set @str=''
set @temp=''
while charindex(',', @oriStr+',')>0
begin
set @temp=left(@oriStr, charindex(',', @oriStr+',')-1)
if charindex(','+@temp+',', ','+@str+',')=0
set @str=@str+','+@temp
set @oriStr=stuff(@oriStr, 1, charindex(',', @oriStr+','), '')
end
return stuff(@str, 1, 1, '')
end
go
2) sql语句:
select T1.id,
dbo.F_getStr(
stuff((select ';'+Name from Test as TT1 where TT1.id=T1.id for xml path('')),1,1,'')
) as EndStr from Test as T1
group by T1.id
sql分组合并字段重复项sql for xml path的更多相关文章
- 用SQL语句,删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- SQL语句--删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select ...
- 转 用SQL语句,删除掉重复项只保留一条
用SQL语句,删除掉重复项只保留一条 用SQL语句,删除掉重复项只保留一条 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1.查找表中多余的重复记录,重复记录是根据单个字段(p ...
- sql server 合并字段
合并字段用+号连接就可以了,不过要判断是不是有的合并项为NULL.如果其中一项为NULL,则整个合并字段为NULL. (IsNull(a.supplier, '') + IsNull(a.po, ' ...
- sql分组拼接字段
--联查select n.*,t.Name from News n join Type_News tn on n.Id=tn.NId join Types t on t.Id=tn.TId --拼接并 ...
- sql server 横向转丛向及FOR XML PATH使用
1.开始数据结构如下: 2.转为如下图: 使用如下SQL语句: ---横向转丛向 select name '姓名', max(case when course='语文' then score end) ...
- sql 查询 某字段 重复次数 最多的记录
需求 查询小时气象表中 同一日期.同一城市.同意检测站点 首要污染物出现出书最多的记录 第一步: 添加 排序字段 select StationID,RecordDate,CityID,Primar ...
- SQL分组合并
STUFF ( character_expression , start , length ,character_expression ) select TcodMedInst_GUID,stuff( ...
- sql 查询哪些字段重复及(in和exict的区别)
select count(1),content_id,keyword_id from tb_content_keyword_relation group by content_id,keyword_i ...
随机推荐
- IP地址解析
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- poj1083 思考题
http://poj.org/problem?id=1083 Description The famous ACM (Advanced Computer Maker) Company has rent ...
- java自动转型
/*2015-10-30*/ public class TypeAutoConvert { public static void main(String[] args) { int a = 5; Sy ...
- Scala课程01
Scala课程01 简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步, ...
- 设置韩澳大利亚sinox弄winxp清除字体和界面美观
澳大利亚开始与汉sinox一直以为接口暗淡,字体比较模糊,否winxp光明,导致眼比较辛苦的眼睛.比方说,可能不那么黯淡刺眼,有益眼睛,但我不能忍受字体模糊.即使调整分辨率,,但是字体模糊还是没有改观 ...
- NYoj 最舒适的路线
题目链接:http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=711 分析:枚举速度最大的边,找出能够从S到达T的最大速度,然后求出它们的比值,与已 ...
- bigdata_hiveserver2报错_thrift
问题一: php客户端,链接hiveserver2 ,报错 如下 1: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Err ...
- DeviceIOControl具体解释-各个击破
DeviceIoControl这个api我们用的不多,可是非常重要,有时会帮助我们实现一些特别的需求, 如获取硬件设备信息.与硬件设备通信(读写数据)等,对比msdn,以下我们详解一下这个api的使用 ...
- IntelliJ IDEA 开发scala
1.下载安装IntelliJ IDEA,并安装scala插件 我下载的是linux的13版本,linux版本是绿色版本,有一个启动的脚本,运行就可以了,也可以在linux建立快捷方式.windows的 ...
- js中从blob提取二进制
文章结构: 一.所遇到的问题 二.解决方法 一. 服务器端通过websocket向浏览器端传输图片(二进制),需要根据不同的图片把图片显示在不同的位置,可行的一个方法是先把图片转化成二进制数组,再把二 ...