TSQL--按某字段列分组,在将各组中某列合并成一行

鉴于群里很多同事在问这个问题,我简单写个Demo,希望对初学者有帮助!

无真相,无解说,不解释,直接上Code!


--==================================================
--示例代码,仅供参考
--按照object_id分组,将同一组的name列的值合并在一起
SELECT OBJECT_NAME(T1.object_id) AS ObjectName ,
( SELECT T2.name + ‘,‘
FROM sys.all_columns T2
WHERE T2.object_id = T1.object_id
FOR
XML PATH(‘‘)
) AS ColNames
FROM sys.all_columns T1
GROUP BY T1.object_id

TSQL--按某字段列分组,在将各组中某列合并成一行,布布扣,bubuko.com

时间: 2024-10-21 01:42:41

TSQL--按某字段列分组,在将各组中某列合并成一行的相关文章

ORACLE 多列合并成一行数据 WM_CONCAT函数以及REPLACE

SELECT ( --SELECT REPLACE(SBPT.PARKSTIME||'~'||SBPT.PARKETIME,',') REPLACE也可以 SELECT WM_CONCAT(SBPT.PARKSTIME||'~'||SBPT.PARKETIME) SAREE FROM SYS_BERTHANDTYPE SBT LEFT JOIN SYS_BERTHTYPEPARKTIME SBPT ON SBT.BERTHTYPEID = SBPT.BERTHTYPEID WHERE BERTH

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

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

MSSQL—列记录合并成一行

在项目开发中,有时会碰到将列记录合并为一行的情况,例如根据地区将人员姓名合并,或根据拼音首字母合并城市等,下面就以根据地区将人员姓名合并为例,详细讲一下合并的方法. 首先,先建一个表,并添加一些数据,建表代码如下: If OBJECT_ID(N'Demo') Is Not Null    Begin        Drop Table Demo    EndElse    Begin        Create Table Demo(        Area nvarchar(30),     

mysql 行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行)

数据库结构如图: 而我想让同一个人的不同成绩变成此人在这一行不同列上显示出来,此时分为2中展现: 第一种展现如图----[多行变一列](合并后的数据在同一列上): sql如下: select name ,group_concat(sore Separator ';') as score from stu group by name 第二种展现如图----[多行变多列](合并后的数据在不同列上): sql如下: SELECT name , MAX(CASE type WHEN '数学' THEN

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,

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语句 合并列值 将一列的多个值合并成一行

效果: oralce写法: select WM_CONCAT(A.title) as citys from tmpcity A sql server写法: select stuff((select ','+A.title from tmpCity A FOR xml PATH('')), 1, 1, '') as citys mysql写法: select GROUP_CONCAT(A.title) as citys from tmpcity A;      --默认的逗号分隔select GR

Oracle中对列加密的方法

Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col(id int,txt varchar2(100) encrypt using '算法名称' identified by '密钥' no salt);优点:对应用完全透明缺点:需要数据库管理员管理wallet,增加了管理复杂性,也无法避免数据库管理员查看原文. 2,使用DBMS_CRYPTO包优点:

获取所有分组中某列最大的行

怎么获取所有分组中某列最大的行?下面用一个例子来说明下: 一共公司有若干员工,每个员工有各自的id, group_id(部门), salary(工资).现在的问题转变为 求公司各部门最高工资的员工 首先明确一个问题,一个部门的若干个员工可能同时拥有最高的工资,需要都列举出来. 看一下员工的数据库表结构(只包含有用的列): Field Type Null Key Default Extra id int(11) NO PRI NULL   group_id int(11) YES   NULL