主表连接多行从表数据转成一行并用逗号连接

SELECT Id,UserName,[Password],
STUFF(( SELECT ‘,‘ + [Description]
FROM (SELECT uir.UserId,rol.[Description] FROM [Security].UserInRole uir INNER JOIN [Security].[Role] rol ON rol.Id=uir.RoleId) as userRoleView
WHERE userRoleView.UserId = us.Id
FOR
XML PATH(‘‘)
), 1, 1, ‘‘) AS RoleDescriptions
FROM [Security].[User] us

时间: 2024-10-29 19:10:12

主表连接多行从表数据转成一行并用逗号连接的相关文章

SQL 将一条记录中多个字段的值拼接为一个字段 && 将多行数据合并成一行,并且拼接CONVERT() 、for xml path的使用

接着上篇文章的订单表(商品编号,价格设置时间id(类似于创建时间,创建时间约早,则act_id越小) ,价格的时间段,商品价格) 一.将一条记录中多个字段的值拼接为一个字段 现要求将两个时间段合并为一个字段,应该如何做呢? 先来看下理想的结果: 查询出的时间段合并到一起了: 代码如下,将查询的字段用+'你想要的符号' + 拼接即可 select item,act_id,loc_id,convert(varchar(100),start_date,20)+ '-' +convert(varchar

Oracle一列的多行数据拼成一行显示字符

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 这样的话,查询出的结果:"aa,bb,cc" www.2cto.com 分隔符如果不需要用

mysql中将多行数据合并成一行数据

一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据 例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句: 1 SELECT am.activeId,m.modelName 2 FROM activemodel am 3 JOIN model m 4 ON am.modelId = m.modelId 5 ORDER BY am.activeId 查询出的列表为图1所示: 图1 修改过后的sql语句,查询后如图2所示: 1 SELECT

oracle查询多行数据合并成一行数据

如果是oracle 10g以上 一个wm_concat函数就可以解决. 如果是oracle 9i以下就有点麻烦了. 表结构如下: NAME Null Type ------------------------ --------- ----- N_SEC_CODE NOT NULL CHAR(6) C_RESEARCHER_CODE NOT NULL VARCHAR2(20) 此表保存了“股票”与“研究员”的对应关系数据,一般而言,对于同一只股票而言,可能有多个研究员 对其进行跟踪研究.所以目前遇

将MSSQL表数据转成SQL语句

创建一个把表记录转换成SQL语句 CREATE PROC [dbo].[up_tb_tosql] @tbname varchar(200) = '',<span style="white-space:pre"> </span>--表名 @rownum varchar(10) ='1000'<span style="white-space:pre"> </span>--转换条数 as BEGIN --表名检查 IF @t

SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)

使用情景: 例如:需要从学生成绩表中,查询分数大于95分的所有学生编号,用逗号分隔成一个字符串. 准备测试数据: create table score (id int,score int) insert into score values(1,90) insert into score values(2,96) insert into score values(3,99) 现在需要通过一个语句查询重"2,,3"这个结果字符串. SQL Server语句如下: select substr

SQL SERVER将多行数据合并成一行(转)

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

SQLServer 中多行数据合并成一行数据(一个字段)

需求:有四行数据,如下: 1.苹果 2.橘子 3.桃子 4.波罗 合并成一个字段:苹果,橘子,桃子,波罗: 需求明确之后,先弄点测试数据,上代码: --创建一个临时表 Create table #temp ( testName varchar(20) ) --写入测试数据 INSERT INTO #temp(testName) values('苹果'); INSERT INTO #temp(testName) values('橘子'); INSERT INTO #temp(testName) v

sql查询 ,多行数据合并成一行,并且显示合并后某一列的值拼接结果

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,