sqlserver 查询时合并相同项
sqlserver 查询时合并相同项
- 一、例子
- 二、建表
- 三、过程
一、例子
现在有一个临时表如下:
autoID | id | name | description | time |
---|---|---|---|---|
1 | 32167542 | 张三 | 电脑 | 2021-12-1 |
4 | 48978925 | 李四 | 手机 | 2021-12-5 |
7 | 32167542 | 张三 | A | 2021-12-8 |
11 | 48978925 | 李四 | B | 2021-12-15 |
查询时需要合并id和name相同的description,合并后数据取autoID最小的记录,即,效果如下:
autoID | id | name | description | time |
---|---|---|---|---|
1 | 32167542 | 张三 | 电脑A | 2021-12-1 |
4 | 48978925 | 李四 | 手机B | 2021-12-5 |
二、建表
select * into #table
from (select 1 as autoID, '32167542' as id, '张三' as name, '电脑' as description, 2021-12-1 as timeunionselect 4 as autoID, '48978925' as id, '李四' as name, '手机' as description, 2021-12-5 as timeunionselect 7 as autoID, '32167542' as id, '张三' as name, 'A' as description, 2021-12-8 as timeunionselect 11 as autoID, '48978925' as id, '李四' as name, 'B' as description, 2021-12-15 as time
)x
三、过程
- 根据id和name分组查询,使用for xml path合并description并将数据放入临时表中
IF OBJECT_ID('Tempdb.dbo.#tableDescription') IS NOT NULL DROP TABLE #tableDescription
select t1.id, t1.name,stuff((select '/' + description from #table t2
where t1.id = t2.idand t1.name = t2.namefor xml path('')),1,1,'') as description
into #tableDescription
from #table t1
group by t1.id, t1.name
- 修改临时表#table的Description
update #table.description = #tableDescription.description
from #table
left join #tableDescription
on #table.id = #tableDescription.id
where #tableDescription.id is not null
- 根据id和name分组,取每组最前面的一行数据
IF OBJECT_ID('Tempdb.dbo.#autoMin') IS NOT NULL DROP TABLE #autoMin
select min(autoID) as autoID into #autoMin from #table group by id,name
- 联表,筛选出每组第一行的数据
select #table.* from #table
left join #autoMin on #table.autoID = #autoMin.autoID
where #autoMin.autoID is not null
sqlserver 查询时合并相同项相关推荐
- 看懂SqlServer查询计划(转)
转自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 对于SqlServer的优化来说,可能优化查询是很常见的事情.关于数 ...
- 看懂SqlServer查询计划
原文:看懂SqlServer查询计划 对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Ser ...
- Apache Hudi的写时复制和读时合并
Apache Hudi http://hudi.apache.org/ http://hudi.apache.org/docs/quick-start-guide.html Hudi是什么 Hudi将 ...
- T-SQL命令在SQLServer查询中的运用
首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...
- java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除
hibernate执行多对多关联查询时,关联表数据被删除 本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑 S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个 ...
- 查询排序_Mysql在排序和查询时不使用索引的情况
1. 写在前头 这篇文章<Mysql是怎样运行的>,参考书中P123 - P125,它列举的就是在排序时不使用索引的情况,这让我回想起在面试的时候,被问到在查询时不使用索引的情况,所以我想 ...
- ibatis 模糊查询 mysql_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办
项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文 ...
- MyEclipse链接SQLSERVER数据库时18456的问题
用MYECLIPSE连接SQLSERVER数据库 首先要确定SQLSERVER的TP/ICP协议打开 选配置工具-SQL SERVER CONFIGURATION MANAGER-SQLSERVE ...
- 【Mysql】大量数据查询时的优化相关知识
今天在查询大量数据时,遇到了查询速度较慢的问题,特地搜集整理了相关的问题解决办法. 一.对于sql的优化 1 使用explain判断sql语句是否使用了索引 1. explain能够干什么 读取表的顺 ...
最新文章
- SIT和UAT有什么区别?
- ASP.NET配置错误页面浅析
- [Luogu 3258] JLOI2014 松鼠的新家
- 一些常用UI控件汇总
- JBoss Fuse –一些鲜为人知的技巧
- ofdm原理_OFDM技术简介
- Swift语法专题五——集合类型
- Android 系统编译环境设置及源代码编译
- 安装Homebrew是报错,安装不成功(亲测使用,确实解决了问题)
- 引力波应该称为空间波
- MSP430FR5994LannchPad开发笔记之三:MSP430的IO复用以及如何去获取IO复用功能
- could not extract ResultSet 错误
- java获取法定节假日_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
- Android股票列表联动
- 萨提亚领衔主题演讲,带领高管和MVP合影,预告Julia女神的演讲中将有我的.NET Core实践
- Docker——安装和启动
- 第 3-5 课:Flutter 调试及 Android 和 iOS 打包
- 微电子器件实验 03 - | 晶体管开关时间的测量
- 人物-发明家-贝尔:亚历山大·贝尔
- mysql count函数加条件总结