表A中id与表B中aid为一对多的关系 例如: 表A: id name a1 tom a2 lily a3 lucy 表B: id aid value b1 a1 B1 b2 a1 B2 b3 a2 B3 b4 a3 B4 b5 a2 B5 b6 a3 B6 b7 a3 B7 使用for xml path('') 和stuff合并显示多行数据到一行中   : 第一种,不使用stuff,结果如下: select id, [val]=( select [value] +',' from tb as…
有表结构如下: 这时,要求显示所有学生的爱好的结果集,代码如下: ) as hobby FROM ( SELECT name, (SELECT hobby+',' FROM student WHERE name=A.name FOR XML PATH('')) AS StuList FROM student A GROUP BY name ) B 结果: 因为有特殊字符,所以转义了,不转义使用   ,TYPE).value('.','NVARCHAR(MAX)'),如下: ) as hobby…
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA             企业1,企业2,企业3 BBB  …
执行 SELECT userid FROM userinfo   得到 1 2 3 4   如果要得到 1,2,3,4   执行方案 DECLARE @STR NVARCHAR(8000) SELECT @STR=ISNULL(@STR+',','')+cast(userid AS NVARCHAR(32)) FROM (SELECT DISTINCT userid FROM userinfo)AS T SELECT @STR   说明:如果userid 不是字符型,那么要先将userid 转化…
select  [value] = stuff((select ','+modmb003  from modmb detail where modmb=18 for xml path('')), 1, 1, '') 其中stuff的作用是:删除指定长度的字符,并在指定的起点处插入另一组字符 语法:STUFF ( character_expression , start , length ,character_expression ) 列:SELECT STUFF('abcdef', 2, 3,…
一.定义表变量 DECLARE @T1 table ( UserID int , UserName ), CityName ) ); ,'a','上海') ,'b','北京') ,'c','上海') ,'d','北京') ,'e','上海') select * from @T1 -----最优的方式 , , '') AS A FROM @T1 A GROUP BY CityName ----第二种方式 ) FROM ( SELECT CityName,(SELECT UserName+',' F…
1)比如表中有三列数据: 2)执行如下查询: 1 SELECT [USER_NAME], [USER_ACCOUNT] 2 , [ROLE_NAME] = stuff(( 3 SELECT ',' + [ROLE_NAME] 4 FROM [WAP_WORKSHEET].[dbo].[userTest] 5 WHERE [USER_ACCOUNT] = a.[USER_ACCOUNT] 6 FOR XML path('') 7 ), 1, 1, '') 8 FROM [WAP_WORKSHEET…
1)比如表中有三列数据: 2)执行如下查询: SELECT [USER_NAME], [USER_ACCOUNT] , [ROLE_NAME] = stuff(( SELECT ',' + [ROLE_NAME] FROM [WAP_WORKSHEET].[dbo].[userTest] WHERE [USER_ACCOUNT] = a.[USER_ACCOUNT] FOR XML path('') ), , , '') FROM [WAP_WORKSHEET].[dbo].[userTest]…
http://blog.csdn.net/rolamao/article/details/7745972 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_c…
转自http://blog.csdn.net/rolamao/article/details/7745972 昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep…
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classes      ep_name AAA             企业1,企业2,企业3 BBB  …
转:https://blog.csdn.net/AntherFantacy/article/details/83824182 今天同事问了一个需求,就是将多行数据合并成一行进行显示,查询了一些资料,照搬过来如下.顺便自己记一下. 比如表中有两列数据 : ep_classes  ep_name AAA         企业1 AAA         企业2 AAA         企业3 BBB         企业4 BBB         企业5 我想把这个表变成如下格式: ep_classe…
SQL Server 在进行数据迁移和报表处理的时候遇到将一列多行数据拼接为一个字符串的情形,查找相关的资料整理如下,提供两种方法. Table:SC Student Course 张三 大学语文 李四 大学语文 张三 书法鉴赏 张三 音乐欣赏 李四 电影赏析 期望得到的结果: Student Course 张三 大学语文,书法鉴赏,音乐欣赏 李四 大学语文,电影赏析 一.用户自定义函数 )) ) AS BEGIN ) SELECT @Course = ISNULL(@Course + ',',…
在日常的数据库运维过程中,有时候需要将Select查询出来的数据集写入到另一个数据表中,其中一种方式是通过存储过程循环写入数据,另一种简便的方式是直接使用Insert Into语句后面跟上Select结果查询语句即可将数据写入.通过Insert Into和Select语句连用可以很快的将一个表的数据写入到另一个数据表中. 例如我们需要将订单表Order_2中的type=1的数据写入到订单表Order_1表中的语句如下: Insert Into Order_1 (OrderNo,Name,Crea…
SQL Server在进行数据迁移和报表处理的时候会遇到将一列多行数据拼接为一个字符串的情况,为了处理这个问题,在网上找了一些相关的资料,提供两种方法,供遇到类似问题的朋友们参考,也借此加深自己的印象. Table:SC Student Course 张三 大学语文 李四 大学语文 张三 书法鉴赏 张三 音乐欣赏 李四 电影赏析 期望得到的结果: Student Course 张三 大学语文,书法鉴赏,音乐欣赏 李四 大学语文,电影赏析 IF OBJECT_ID(N'SC') IS NOT NU…
Oracle一列的多行数据拼成一行显示字符   oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数.    www.2cto.com   先介绍:WMSYS.WM_CONCAT 例:         id  name         1   aa         2   bb         3   cc   要的结果是"aa,bb,cc"   select WMSYS.WM_CONCAT(a.name) from user a 这样的话,查询出的结果:…
1.按Ctrl+F,弹出“替换”的窗口: 2.选择“替换”菜单: 3.“查找目标”内容输入为:\r\n: 4.“替换为”内容为空: 5.“查找模式”选择为正则表达式: 6.设置好之后,点击“全部替换”,即可将多行数据合并成一行.  …
将多条数据组合到一行 ) set @sql='select ''roleinfo:''' ) declare cursor1 cursor for select id from Userrole where 登录名='tl' open cursor1 fetch next from cursor1 into @column begin set @sql=@sql+','+@column+'as id,(select 角色 from UserRole as s where s.id='+@colu…
我们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来实现,但是如果有几十条几百条甚至上千条数据的时候继续写单独的SQL语句的话那就惨了,其实有两种简单的方法: 第一,将Excel数据整理好了之后,通过SQL的导入功能直接导进数据库,但是得保证数据库字段和Excel的字段一致. 第二,通过Excel来生成对应的SQL语句,直接将SQL语句复制到分析器…
FOR XML PATH 方法是用于将查询结果集以XML形式展示,这样展示方式的好处不言而喻.现在我要介绍的FOR XML PATH的"另类"用法. 首先,我们先来看看它的正常用法.下图是我们用到的一张TEST_PERSON表: 用FOR XML PATH方法查询,SQL语句如下: SELECT * FROM TEST_PERSON FOR XML PATH 显示结果如下: 展开结果可以看到如下图: 神奇吧!!!!细心的同学会注意到这个XML文件的行节点是<row>,如果需…
当有大量重复体力工作写入或修改数据到数据库中时,可以 第一,将Excel数据整理好了之后,通过SQL的导入功能直接导进数据库,但是得保证数据库字段和Excel的字段一致. 第二,通过Excel来生成对应的SQL语句,直接将SQL语句复制到分析器里面执行即可. 如:使用excel的公式写入数据库: =“insert into [student] (userid,username,userpassword) values('"&A2&"','"&B2&am…
hbase 提供很方便的shell脚本,可以对数据表进行 CURD 操作,但是毕竟是有一定的学习成本的,基本上对于开发来讲,sql 语句都是看家本领,那么,有没有一种方法可以把 sql 语句转换成 hbase的原生API呢? 这样就可以通过普通平常的 sql 来对hbase 进行数据的管理,使用成本大大降低.Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix - we put the SQL back in NoSql”,通过官方说明,Phoenix 的性能很高,相…
如何用一条sql语句实现批量更新?mysql并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现. 复制代码 代码如下: UPDATE mytable SET myfield = CASE id WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END WHERE id IN (1,2,3); 这里使用了case when 这个小技巧来实现批量更新. 举个例子: 复制代码 代码如下: UPDATE categories…
这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select * from dbo.sysdatabases where name='TestDB') begin drop database TestDB end go --创建数据库TestDB---- create databasse TestDB on( --数据库的名称-- name='testdb_…
经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来实现,但是如果有几十条几百条甚至上千条数据的时候继续写单独的SQL语句的话那就惨了,其实有两种简单的方法: 第一,将Excel数据整理好了之后,通过SQL的导入功能直接导进数据库,但是得保证数据库字段和Excel的字段一致. 第二,通过Excel来生成对应的SQL语句,直接将SQL语句复制到分析器里面…
我们经常会遇到这样的要求:用户给发过来一些数据,要我们直接给存放到数据库里面,有的是Insert,有的是Update等等,少量的数据我们可以采取最原始的办法,也就是在SQL里面用Insert into来实现,但是如果有几十条几百条甚至上千条数据的时候继续写单独的SQL语句的话那就惨了,其实有两种简单的方法: 第一,将Excel数据整理好了之后,通过SQL的导入功能直接导进数据库,但是得保证数据库字段和Excel的字段一致. 第二,通过Excel来生成对应的SQL语句,直接将SQL语句复制到分析器…
打印sql语句: $model->find()->createCommand()->getRawSql(); 批量插入 Yii::$app->db->createCommand()->batchInsert(UserModel::tableName(), ['user_id','username'], [ ['1','test1'], ['2','test2'], ['3','test3'], ])->execute();…
msisdn createtime closetime138 2011-5-17 15:30:00:000 2011-5-17 15:30:00:530138 2011-5-17 15:40:00:000 2011-5-17 15:40:00:530怎么用sql语句查询出138这个号码一共用了多少时间? =============================================== select sum(datediff(millisecond,createtime, close…
emo场景,以oracle自带库中的表emp为例: select ename,deptno from emp order by deptno; ENAME DEPTNO CLARK 10 KING 10 MILLER 10 SMITH 20 ADAMS 20 FORD 20 SCOTT 20 JONES 20 ALLEN 30 BLAKE 30 MARTIN 30 JAMES 30 TURNER 30 WARD 30 现在想要将同一部门的人给合并成一行记录,如何做呢?如下: ENAME DEPT…