sql里将重复行数据合并为一行数据使用逗号进行分隔

一.定义表变量


代码如下:

DECLARE @T1 table
(
UserID int ,
UserName nvarchar(50),
CityName nvarchar(50)
);

代码如下:

insert into @T1 (UserID,UserName,CityName) values (1,'a','上海')
insert into @T1 (UserID,UserName,CityName) values (2,'b','北京')
insert into @T1 (UserID,UserName,CityName) values (3,'c','上海')
insert into @T1 (UserID,UserName,CityName) values (4,'d','北京')
insert into @T1 (UserID,UserName,CityName) values (5,'e','上海')

代码如下:

select * from @T1
-----最优的方式
SELECT CityName,STUFF((SELECT ',' + UserName FROM @T1 subTitle WHERE CityName=A.CityName FOR XML PATH('')),1, 1, '') AS A
FROM @T1 A
GROUP BY CityName
----第二种方式
SELECT B.CityName,LEFT(UserList,LEN(UserList)-1)
FROM (
SELECT CityName,(SELECT UserName+',' FROM @T1 WHERE CityName=A.CityName FOR XML PATH('')) AS UserList
FROM @T1 A
GROUP BY CityName
) B
stuff(select ',' + fieldname from tablename for xml path('')),1,1,'')

这一整句的作用是将多行fieldname字段的内容串联起来,用逗号分隔。
for xml path是SQL Server 2005以后版本支持的一种生成XML的方式。
stuff函数的作用是去掉字符串最前面的逗号分隔符。
效果图:

(0)

相关推荐

  • PHP 将逗号、空格、回车分隔的字符串转换为数组的函数

    我们在搜索一些东西时会经常遇到可以通过空格隔开来达到输入多个条件的目的.今天正好项目中遇到了这个情况,就写了一个函数,将多个条件放到数组里.目前支持空格.逗号(中英文).回车分割,如不能满足需求,看下这个函数修改一下应该就可以了 复制代码 代码如下: <?php /** * transform ' hello, world !' to array('hello', 'world') */ function strsToArray($strs) { $result = array(); $arra

  • java获得平台相关的行分隔符和java路径分隔符的方法

    [问题] 不同系统平台下的行分隔符.路径分隔符等常常不同.如 复制代码 代码如下: 行分隔符在windows 下是 \r\n,在Linux下面是 \n, 在Mac下是 \r路径分隔符在windows下是 \ ,在LInux下是 / 如何在Java程序获取当前平台的分隔符,以及其他系统相关的状态呢? [实现] 复制代码 代码如下: import java.util.Properties; public class SeparatorUtils { /* system properties to g

  • 一串字字符中多个逗号替换为一个 既标准分隔符(正则表达式)

    需求如下: 将一串字符转换为标准的分隔符字符串 如:",,,,a,svv,ss,,v,,v,,," 转换后:"a,svv,ss,v,v" js实现代码:多用于后台中,关键词替换,自动将空格,全角逗号,统一替换为半角逗号,并将多个逗号合并 //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 function trimLeft(s){ if(s == null) { return &

  • 在MySQL字段中使用逗号分隔符的方法分享

    被分割的字段一定是有限而且数量较少的,我们不可能在一个字符串中存储无限多个字符 这个字段所属的表与这个字段关联的表,一定是一对多的关系 比如下面这个表结构所代表的content与tag这两个对象 复制代码 代码如下: mysql> SELECT * FROM content; +----+------+| id | tags | +----+------+| 1 | 1,2 | | 2 | 2,3 | +----+------+ 2 rows in set (0.01 sec) mysql>

  • Oracle逗号分隔列转行实现方法

    那么,现在如果给出一个权限编号,要去检索出用后这个权限的用户集合,就会需要在逗号分隔的多个权限编号中去匹配给出的这个权限编号.如果使用like去做,一则效率不高,二则匹配不精确.因此用到了逗号分隔列转行的方法.目前该方法只适合在oracle数据库中使用.该方法只需要sql语句就可以实现列转行. 下面给出该方法的示例: select a,b,c from(with test as (select 'aaa' a,'bbb' b,'1,2,3' c from dual)select a,b,subs

  • jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法

    本文实例讲述了jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法.分享给大家供大家参考.具体如下: 左右拖拽切换对比图片效果,运行效果后,图片中间有个拖动条,拖动左右滑动,可看到图片不一样的效果,女模特的脸变嫩了,呵呵,其实是用了两张背景图片实现的,这就需要jquery.beforeafter.js插件了,拖动时候的小图标不见了,路径可以在jquery.beforeafter.js中设置,不多说了. 运行效果截图如下: 在线演示地址如下: http://d

  • jQuery实现分隔条左右拖动功能

    本文实例讲述了jQuery实现分隔条左右拖动功能的实现代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体内容如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </titl

  • 用JQuery在网页中实现分隔条功能的代码

    Javascript代码如下,将该代码保存成JS文件后在HTML中引用. 复制代码 代码如下: jQuery.noConflict(); jQuery.fn.extend({ jsplit: function (j) { return this.each(function () { j = j || {}; j.Btn = j.Btn || {}; j.Btn.oBg = j.Btn.oBg || {}; j.Btn.cBg = j.Btn.cBg || {}; var jun = { MaxW

  • java之路径分隔符介绍

    路径分隔符: Windows下是"\" unix|linux下是"/" 考虑到程序的可移植性,创建文件时建议大家选用"/",因为经过测试用java创建文件时在windows平台下用"/"也是可以的,java貌似在后台作过处理了. 还有一种用法: 用File.separator代替它们,这个永远不会出现可移植性问题. 下面举一些例子,加深理解: File f = new File("d://book//1")

  • sql里将重复行数据合并为一行数据使用逗号进行分隔

    一.定义表变量 复制代码 代码如下: DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); 复制代码 代码如下: insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @

  • 使用SQL将多行记录合并成一行实例代码

    目录 前言 1.数据处理前 2,结果数据展示 3,hive处理方式 4,MySQL处理方式 总结 前言 我们在数据开发的过程中,经常会遇到这样的需求,就是将多行合并为一行,并且用特定字符隔开. 1.数据处理前 2,结果数据展示 3,hive处理方式 在hive里面,用concat_ws函数处理 格式: concat_ws(‘分隔符’,collect_set/collect_list(字段)) 参数释义: concat_ws:多行合并一行函数 collect_set:合成数组,数据已去重 coll

  • 分享SQL Server删除重复行的6个方法

    1.如果有ID字段,就是具有唯一性的字段 复制代码 代码如下: delect table where id not in ( select max(id) from table group by col1,col2,col3... ) group by 子句后跟的字段就是你用来判断重复的条件,如只有col1,那么只要col1字段内容相同即表示记录相同. 2. 如果是判断所有字段也可以这样 复制代码 代码如下: select * into #aa from table group by id1,i

  • postgresql数据合并,多条数据合并成1条的操作

    对于主表中一条记录,对应明细表中的96条数据,每一条数据相隔15分钟,明细中没96条数据对应主表中的一个日期trade_date,并且每条明细中有一个字段start_time, 即明细中每96条数据中第一条数据中start_time为00:00, 第二条为00:15,第三条为00:30,依次类推,直到23:45 ,现在要将明细表中的96条数据合并成24条,即第一条数据中start_time为00:00,第二条为01:00,第三条为02:00 sql:select max(de.bid_num)

  • SQL Sever中使用SQL语句实现把重复行数据合并为一行并用逗号分隔

    一.定义表变量 复制代码 代码如下: DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @T1 (UserID,

  • SQL Server中使用SQL语句实现把重复行数据合并为一行并用逗号分隔

    一.定义表变量 复制代码 代码如下: DECLARE @T1 table ( UserID int , UserName nvarchar(50), CityName nvarchar(50) ); insert into @T1 (UserID,UserName,CityName) values (1,'a','上海') insert into @T1 (UserID,UserName,CityName) values (2,'b','北京') insert into @T1 (UserID,

  • mysql如何将多行数据合并成一行

    select group_concat(list_name) from aa_list

  • pd.drop_duplicates删除重复行的方法实现

    目录 一.使用语法及参数 二.实操 1.例子一 2.例子二 3.删除重复项后重置索引 drop_duplicates 方法实现对数据框 DataFrame 去除特定列的重复行,返回 DataFrame 格式数据. 一.使用语法及参数 使用语法: DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False) 参数: subset – 指定特定的列 默认所有列 keep:{‘first’

  • vue开发table数据合并实现详解

    目录 前言 思路梳理 方案一 Element 官方 Table 组件数据合并 注意 方案二 Table-column Scoped Slot 注意 前言 项目中的某个模块,一个勾选表格数据,里面的行数据由于有关联关系,需要多行数据合并,然后勾选时选中一条数据,方便进行下一步业务操作,然后产品经理就指着原型上的表格,说:这里,这里, 数据需要合并...... 功能需求有了,里面有个技术实现点 —— 表格数据合并,下面我们就来分析一下这个表格数据合并的实现 思路梳理 方案一 Element 官方 T

  • layui-table获得当前行的上/下一行数据的例子

    此方法主要是获得Layui当前行数据的上一行数据,或者下一行数据,os旧的jquery选择器 se选择器 nse新的jquery选择器 /** * * @param obj layui-table的行数据对象 * @param number 要查找的行距离当前行距离,以当前行为准向上一行为-,向下为+ * @param filedName 要查找的filed * @returns {string} 查找filed的值 */ function getRowData(obj, number, fil

随机推荐