MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat

-- 将多行记录(只能一个列)用指定分隔符分隔
IF(OBJECT_ID(‘sp_RowsChangeClosBySplit‘,N‘P‘) IS NOT NULL)
    DROP PROC sp_RowsChangeClosBySplit
GO
CREATE PROC sp_RowsChangeClosBySplit
@table nvarchar(50),            -- 表名
@field nvarchar(50),            -- 要拼接的字段
@split varchar(10)=‘,‘,            -- 分隔符
@where nvarchar(500)=‘‘    -- 条件
AS
BEGIN
DECLARE @sql NVARCHAR(1000)
SET @sql=‘select TOP 1 stuff((select ‘‘‘+@split+‘‘‘+convert(varchar(50),‘+@field+‘) from ‘+@table+‘ ‘+@where+‘ FOR XML PATH(‘‘‘‘)), 1, 1, ‘‘‘‘) as cols from ‘+@table+‘ group by ‘+@field
PRINT @sql
EXEC sp_executesql @sql
END
 

调用:

EXEC dbo.sp_RowsChangeClosBySplit @table = N‘pro_Household‘, -- nvarchar(50)
    @field = N‘ID‘, -- nvarchar(50)
    @split = ‘,‘, -- varchar(10)
    @where = N‘where id < 10‘ -- nvarchar(500)

分割后:结果集:

普通查询:

SELECT ID FROM dbo.pro_Household WHERE ID<10  

分割钱:结果集

时间: 2024-10-09 03:32:48

MSSQL将多行单列变一行一列并用指定分隔符分隔,模拟Mysql中的group_concat的相关文章

dbutils封装对象,单列,一行一列(用)

基本用法:查找并封装对象与对象集合 public User findUserByNamePassword(String name,String password){ QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from user where name='"+name+"' and password = '"+password

mysql中的多行查询结果合并成一个

SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND md.user_id=17: 利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行,如|1 | 10,20,20| 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name)

mysql中的多行查询结果合并成一个(转)

SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND md.user_id=17: 利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行,如|1 | 10,20,20| 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name)

认识SQLServer索引以及单列索引和多列索引的不同

一.索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书.在数据库中,数据库程序使用索引可以重啊到表中的数据,而不必扫描整个表.书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表. 索引的利弊:查询执行的大部分开销是I/O,使用索引提高性能的一个主要目标是避免全表扫描

MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)

本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463596 有很多是转载合并过来. 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的 计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重

MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)

原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或线程并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源.如何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素.从这一角度来说,锁对于

mysql中最常用到的数据类型,约束条件,以及表,字段,行的crud操作指令,function和precedure之间的区别,索引,安全,事务

数据库总结 传统记录数据的缺点:不易保存,备份困难,查找不便 数据库:存储数据的仓库,描述一个事务的基本信息 优点:1.持久化存储 2.读写速度极高 3.保证数据的有效性 RDBMS relational database management system 军火当前主要使用两种类型的数据库:1.关系型数据库,2非关系型数据库 关系型数据库的主要产品: oracle:主要大型项目中使用,银行,电信等项目 mysql:web时代使用最广泛的关系型数据库 ms sql server: 微软的项目中使

[数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁

注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM引擎)和页级锁(BDB引擎 ). 行级锁 行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁.行级锁能大大减少数据库操作的冲突.其加锁粒度最小,但加锁的

R语言选择特定的行,对某一列排序

R语言的数据框跟MySQL 中的表很像 根据某一列的特定值选择相应的行 d是个数据框, 有一列的名字是name d[d$name=="95",] 这样就选中了 name为"95"的所有行 m 是个数据框 , 第三列的名字是height m[order(m$height),] 这样就根据第三列的值对 m 进行了排序 也可以用以下方法 m[order(m[,3]),] m[order(m[,3]),][,c(1,3,6)]    // 表示根据第三列对整个数据框排序后,