T-SQL 合并多行数据显示到一行

思路:

自连接,使用For XML Path(‘‘)和STUFF函数

SELECT * FROM STUDENT

Name                      Team
------------------------- -------------------------
Jack                      Team1
Rose                      Team1
Cindy                     Team1
Richard                   Team2
Jenny                     Team2

SELECT
        T1.Team,
        STUFF((
                SELECT
                    CONCAT(‘/‘,T2.Name)
                FROM
                        STUDENT T2
                WHERE
                        T2.Team=T1.Team
                FOR XML PATH(‘‘)
            ),1,1,‘‘)
        AS NAMES
FROM
        STUDENT T1
GROUP BY
        T1.Team 

Team                      NAMES
------------------------- ---------------------------------------------------------

Team1                     Jack/Rose/Cindy
Team2                     Richard/Jenny

时间: 2024-08-14 06:32:03

T-SQL 合并多行数据显示到一行的相关文章

SQL合并多行查询到一行

示例表 tb 数据如下 id value—————1 aa1 bb2 aaa2 bbb2 ccc 第一种 SELECT id, [val]=( SELECT [value] +',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 第一种显示结果 1 aa,bb, 1 aa,bb, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 第二种 SELECT id, [val]=( S

Oracle 合并多行记录为一行

1.实际需求情况如下:    描述:上述表中,某一位同学有多门课程和成绩,现在希望有一条SQL语句,将课程名称和成绩合并在一起显示,如下: 描述:将这位同学的全部课程和成绩用一个字段表示,里面包括全部的课程名称和考试成绩 2.问题分析 解决这个问题可以采用创建function的办法,去合并这2个字段,但这样太麻烦,由于是采用的Oracle10g,故可以采用函数wmsys.wm_concat()实现此功能. 3.解决方案 SQL: 第一步先写一个视图view_ly_sjdxpt_jwcj,合并这2

SQLserver2008一对多,多行数据显示在一行

现在有一个需求 我们有一张表employee EmpID EmpName ---------- ------------- 1 张山 1 张大山 1 张小山 2 李菲菲 2 李晓梅 Result I need in this format: EmpID EmpName ---------- ------------- 1 张山, 张大山, 张小山 2 李菲菲, 李晓梅 如果使用MySQL,可以很简单的实现 selecet group_concat(empname) from employee g

Sql Server合并多行询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

示例表 tb 数据如下 id value-----1 aa1 bb2 aaa2 bbb2 ccc SELECT id, [val] = ( SELECT [value] + ',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 显示结果 1 aa,bb, 1 aa,bb, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, SELECT id, [val]=( SELECT [v

SQL: 从一个表随机读取一行或几行记录的问题

比如ms sql 2000,随机读取了一行记录: SELECT TOP 1 * FROM [tablename] ORDER BY NEWID() 遇到的问题是,如果这个表记录不多,比如几十或几百.几千行记录,基本上不用1秒时间就出来了. 但我今天需要从一个几十万行记录的表中随机读取一条记录,读取一次需要3 - 5秒. 这效率有点接受不了. 到网上也搜索了一下,有没有更好的办法,没找到好的办法. 关于这个问题的讨论,CSDN: http://topic.csdn.net/u/20100517/1

合并多行查询数据到一行:使用自连接、FOR XML PATH('')、STUFF或REPLACE函数

示例表 tb 数据如下 id value—————1 aa1 bb2 aaa2 bbb2 ccc 第一种 SELECT id, [val]=( SELECT [value] +',' FROM tb AS b WHERE b.id = a.id FOR XML PATH('') ) FROM tb AS a 第一种显示结果 1 aa,bb, 1 aa,bb, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 2 aaa,bbb,ccc, 第二种 SELECT id, [val]=( S

SQL经典问题 行转列

如何将不同选项的行放到同一行的不同列,能否用一句sql实现? 1 SELECT QId,QDTitle,QDContent FROM dbo.tb_QuestionDetail WHERE QId='3' QId QDTitle QDContent3 A 正确3 B 错误 1 ;WITH Options AS ( 2 SELECT QId,QDTitle,QDContent FROM dbo.tb_QuestionDetail WHERE QId='3' 3 ) 4 SELECT P.* FRO

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具:mssql-scripter.它支持在SQL Server.Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本. Mssql-scripter是一个跨平台的命令行工具,功能等同于SQL Server Management Studio中的Generate and Publish Scripts Wizard. 咱们能够在Linux.macOS和Windows上使用它

jquery动态合并表格行

利用<td rowspan = "num"/>;原理来实现,其中num为要合并的行数. <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> td{ border:1px solid red; } </style> <