使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理

- --患者接触记录信息,一个患者可以有N个不同的接触记录,每个接触记录又有N个接触类型记录
- IF OBJECT_ID ('dbo.TEST') IS NOT NULL
- DROP TABLE dbo.TEST
- GO
- CREATE TABLE dbo.TEST
- (
- ID INT IDENTITY (1000,1) NOT NULL,
- cid INT,--接触记录号
- REMARK VARCHAR (4000),
- CONTACTTYPE VARCHAR (20),
- DESCRIBE VARCHAR (4000),
- ADDDATE DATETIME
- )
- GO
- --测试数据,包含重复类型
- INSERT INTO dbo.TEST (cid, REMARK, CONTACTTYPE, DESCRIBE, ADDDATE)
- VALUES (81667,'咨询备注','ContactType_1', NULL,'2014-06-03 09:53:24')
- ,(81667,'回访备注','ContactType_2', NULL,'2014-06-03 09:53:24')
- ,(81667,'咨询备注','ContactType_1', NULL,'2014-06-03 09:53:24.92')
- ,(81667,'回访备注','ContactType_2','回访找棕','2014-06-03 09:53:24.927')
- ,(81667,'随访备注','ContactType_3','随访详情','2014-06-03 09:53:24.933')
- ,(81667,'通知备注','ContactType_4','通知内容描述','2014-06-03 09:53:24.94')
- ,(81667,'预约备注','ContactType_5','预约内容','2014-06-03 09:53:24.947')
- ,(81667,'回复备注','ContactType_6','回复测试。。。。','2014-06-03 09:53:24.95')
- ,(81679,'咨询备注','ContactType_1', NULL,'2014-06-03 10:53:53.743')
- ,(81679,'回访备注','ContactType_2','回访内容描述','2014-06-03 10:53:53.75')
- ,(81679,'随访备注','ContactType_3','随访详情','2014-06-03 10:53:53.757')
- ,(81679,'通知备注','ContactType_4','通知内容描述','2014-06-03 10:53:53.763')
- ,(81679,'预约备注','ContactType_5','预约内容','2014-06-03 10:53:53.767')
- ,(81679,'回复备注','ContactType_6','回复内容','2014-06-03 10:53:53.777')
- --之前的sql方法,有可以会返回相同的类型则
- DECLARE @SNvarchar(2000)
- SET @S=''
- SELECT @S=@S+'/'+(CASE ContactType
- WHEN 'ContactType_1'THEN '咨询'
- WHEN 'ContactType_2'THEN '回访'
- WHEN 'ContactType_3'THEN '随访'
- WHEN 'ContactType_4'THEN '通知'
- WHEN 'ContactType_5'THEN '预约'
- WHEN 'ContactType_6'THEN '回复'
- END)
- FROM test WHERE CID=81667
- PRINT @s

- --新的Sql方法,通过FOR XML PATH和DISTINCT进行去重处理
- DECLARE @SNvarchar(2000)
- --无法在包含DISTINCT关键字的查询中将结果赋予变量,以下Sql将出现错误"关键字 'DISTINCT' 附近有语法错误。 Severity 15"
- -- SELECT @s= DISTINCT -- ( '/'+(CASE ContactType -- WHEN 'ContactType_1'THEN '咨询' -- WHEN 'ContactType_2'THEN '回访' -- WHEN 'ContactType_3'THEN '随访' -- WHEN 'ContactType_4'THEN '通知' -- WHEN 'ContactType_5'THEN '预约' -- WHEN 'ContactType_6'THEN '回复' -- END) -- ) -- FROM test WHERE Cid=81667 -- FOR XML PATH('')
- SELECT @S=(
- SELECT DISTINCT (
- '/'+(CASE ContactType
- WHEN 'ContactType_1'THEN '咨询'
- WHEN 'ContactType_2'THEN '回访'
- WHEN 'ContactType_3'THEN '随访'
- WHEN 'ContactType_4'THEN '通知'
- WHEN 'ContactType_5'THEN '预约'
- WHEN 'ContactType_6'THEN '回复'
- END)
- )
- FROM test WHERE Cid=81667
- FOR XML PATH('')
- )
- PRINT @s

使用SQL SERVER FOR XML PATH将多个结果集转换成一行并进行去重处理的更多相关文章
- 灵活运用 SQL SERVER FOR XML PATH 转
灵活运用 SQL SERVER FOR XML PATH FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些 ...
- SQL Server FOR XML PATH 语句的应用---列转行
经常在论坛看到高手使用了 for xml path,由于是搜索一下,记录了详细的使用方法.在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据,下面是它的一些应用 ...
- 问题:sqlserver有没有类似Oracle的LISTAGG;结果: 灵活运用 SQL SERVER FOR XML PATH
灵活运用 SQL SERVER FOR XML PATH FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前 ...
- SQL Server FOR XML PATH 和 STUFF函数的用法
FOR XML PATH ,其实它就是将查询结果集以XML形式展现,将多行的结果,展示在同一行. 下面我们来写一个例子: 假设我们有个工作流程表: CREATE TABLE [dbo].[Workfl ...
- Sql Server FOR XML PATH
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- 灵活运用 SQL SERVER FOR XML PATH
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...
- Sql server For XML Path 学习
最近看到太多人问这种问题 自己也不太了解 就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...
- Sql server—— for xml path简单用法(可以按照分组把相同组的列中的不同的值,像字符串一样拼接在一起显示在分组之后的列中。)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAI8AAACWCAIAAABo2EyXAAAKeklEQVR4nO2dy27rNh7G+U7CFIrfZX
- SQL SERVER FOR XML PATH合并字符串
两种方式,效率立竿见影 ------------------------------------------------ SET STATISTICS TIME ON DECLARE @OrderSt ...
随机推荐
- elementUI 学习入门之 input 输入框
基础用法 <el-input v-model="input1" palcehoder="请输入"></el-input> var Mai ...
- 验证码无法显示:Could not initialize class sun.awt.X11GraphicsEnvironment 解决方案
一.原因现象:图下图 二.原因导致: 经过Google发现很多人也出现同样的问题.从了解了X11GraphicEnvironment这个类的功能入手,一个Java服务器来处理图片的API基本上是需要运 ...
- Django+Nginx+uwsgi搭建自己的博客(五)
在上一篇博文中,向大家介绍了Users App和Index的前端部分的实现,以及前端与Django的通信部分.至此,我们的博客已经具备一个简单的雏形,可以将其部署在本地的服务器上了.目前较为流行的we ...
- ssm demo,用户角色权限管理
SSM框架整合 Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastjson 5, aspectwea ...
- 【BZOJ 2656】2656: [Zjoi2012]数列(sequence) (高精度)
2656: [Zjoi2012]数列(sequence) Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 1499 Solved: 786 Descri ...
- [BZOJ4196][NOI2015]软件包管理器(树链剖分)
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 2166 Solved: 1253[Submit][Sta ...
- HashMap结构及使用
HashMap的数据结构 HashMap主要是用数组来存储数据的,我们都知道它会对key进行哈希运算,哈系运算会有重复的哈希值,对于哈希值的冲突,HashMap采用链表来解决的.在HashMap里有这 ...
- slf4j使用
pom jar包引用<!-- Logging --> <dependency> <groupId>ch.qos.logback</groupId> &l ...
- 解决新版本webpack vue-cli生成文件没有dev.server.js问题
新版本webpack生成的dev.server.js 在webpack.dev.conf.js中 webpack.dev.conf.js const axios = require('axios') ...
- 'NSUnknownKeyException', reason:....etValue:forUndefinedKey:]: this class is not key value coding-compliant for the key
erminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MainTableViewControl ...