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

三、过程

  1. 根据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
  1. 修改临时表#table的Description
update #table.description = #tableDescription.description
from #table
left join #tableDescription
on #table.id = #tableDescription.id
where #tableDescription.id is not null
  1. 根据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
  1. 联表,筛选出每组第一行的数据
select #table.* from #table
left join #autoMin on #table.autoID = #autoMin.autoID
where #autoMin.autoID is not null

sqlserver 查询时合并相同项相关推荐

  1. 看懂SqlServer查询计划(转)

    转自:http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 对于SqlServer的优化来说,可能优化查询是很常见的事情.关于数 ...

  2. 看懂SqlServer查询计划

    原文:看懂SqlServer查询计划 对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题, 因此本文只谈优化查询时如何看懂SQL Ser ...

  3. Apache Hudi的写时复制和读时合并

    Apache Hudi http://hudi.apache.org/ http://hudi.apache.org/docs/quick-start-guide.html Hudi是什么 Hudi将 ...

  4. T-SQL命令在SQLServer查询中的运用

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  5. java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除

    hibernate执行多对多关联查询时,关联表数据被删除 本帖最后由 binbb521 于 2012-12-04 11:48:29 编辑 S2SH框架开发的网站,执行两个多对多关系的表查询时,关联两个 ...

  6. 查询排序_Mysql在排序和查询时不使用索引的情况

    1. 写在前头 这篇文章<Mysql是怎样运行的>,参考书中P123 - P125,它列举的就是在排序时不使用索引的情况,这让我回想起在面试的时候,被问到在查询时不使用索引的情况,所以我想 ...

  7. ibatis 模糊查询 mysql_Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办

    项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文 ...

  8. MyEclipse链接SQLSERVER数据库时18456的问题

    用MYECLIPSE连接SQLSERVER数据库 首先要确定SQLSERVER的TP/ICP协议打开   选配置工具-SQL SERVER CONFIGURATION MANAGER-SQLSERVE ...

  9. 【Mysql】大量数据查询时的优化相关知识

    今天在查询大量数据时,遇到了查询速度较慢的问题,特地搜集整理了相关的问题解决办法. 一.对于sql的优化 1 使用explain判断sql语句是否使用了索引 1. explain能够干什么 读取表的顺 ...

最新文章

  1. SIT和UAT有什么区别?
  2. ASP.NET配置错误页面浅析
  3. [Luogu 3258] JLOI2014 松鼠的新家
  4. 一些常用UI控件汇总
  5. JBoss Fuse –一些鲜为人知的技巧
  6. ofdm原理_OFDM技术简介
  7. Swift语法专题五——集合类型
  8. Android 系统编译环境设置及源代码编译
  9. 安装Homebrew是报错,安装不成功(亲测使用,确实解决了问题)
  10. 引力波应该称为空间波
  11. MSP430FR5994LannchPad开发笔记之三:MSP430的IO复用以及如何去获取IO复用功能
  12. could not extract ResultSet 错误
  13. java获取法定节假日_java 获取n个工作日后的日期(包含法定节假日、双休日、节后补班)...
  14. Android股票列表联动
  15. 萨提亚领衔主题演讲,带领高管和MVP合影,预告Julia女神的演讲中将有我的.NET Core实践
  16. Docker——安装和启动
  17. 第 3-5 课:Flutter 调试及 Android 和 iOS 打包
  18. 微电子器件实验 03 - | 晶体管开关时间的测量
  19. 人物-发明家-贝尔:亚历山大·贝尔
  20. mysql count函数加条件总结

热门文章

  1. PAT TOP 1021. Safe Fruit (35)
  2. 2020年高教社杯全国大学生数学建模C题中小微企业信贷决策(Matlab代码)
  3. 基于Arduino的智能垃圾桶
  4. linux终端 php清屏,Linux 清屏命令
  5. 第十四届蓝桥杯cb组省赛个人题解
  6. 超级码力在线编程大赛初赛 第3场
  7. LabVIEW数字、字符串转换为枚举型
  8. 机器学习算法原理 (一)机器学习算法汇总
  9. 小米/手机,申请完整版root权限(红米5 plus 为例)
  10. 五,信息解析和天猫精灵控制LED