有这样一个需求:表T_FUN_TASK为任务表,有字段(TASKID,TASKNAME),表T_FUN_LOGBOOK为日志表,有字段(LOGID,TASKID,LOGDATE),一个任务可持续多天,每天会记录一条日志。在查询表T_FUN_TASK时,需将任务表中的 LOGDATE 查询出来作为一列 LOGDATES显示。

T_FUN_TASK

T_FUN_LOGBOOK

查询结果

此结果查询方法可以用存储过程轻松实现,这里我要介绍的是sqlserver FOR XML PATH语句的应用,在SQL Server中利用 FOR XML PATH 语句能够把查询的数据生成XML数据

且合并为一条数据,看以下示例:

SELECT LOGDATE FROM T_FUN_LOGBOOK WHERE TASKID=231 FOR XML PATH

结果为:

2014-01-06T00:00:00

2014-01-07T00:00:00

在前面的需求中,我是想要把这2条数据合并到一起且没有XML标签,条与条之间用下划线(_)分隔的,日期的格式也变为了2014/01/07的格式。下面来一步一步来完成需求。

首先,将日期格式转化为需要的格式:

SELECT CONVERT(VARCHAR(100), LOGDATE, 111) FROM T_FUN_LOGBOOK WHERE TASKID=231 FOR XML PATH

结果变为:

2014/01/06

2014/01/07

可以发现,转化字符卷的过程中,把logdate标签给去掉了。现在我们要去掉标签:

SELECT CONVERT(VARCHAR(100), LOGDATE, 111) FROM T_FUN_LOGBOOK WHERE TASKID=231 FOR XML PATH('')

在PATH后面将一个空的字符卷作为参数传递,就可以去掉标签,结果:2014/01/062014/01/07。

现在两条结果之间很难区分,需要用下划线将其分隔开来,方法是在CONVERT函数前面加上一个下划线:

SELECT '_'+CONVERT(VARCHAR(100), LOGDATE, 111) FROM T_FUN_LOGBOOK WHERE TASKID=231 FOR XML PATH('')

结果:_2014/01/06_2014/01/07。

在分析了FOR XML PATH语句之后,就来将这个查询结果添加到对T_FUN_TASk的查询结果中去。我的思路是先构建一个子查询,然后查询TASK表时LEFT JOIN这个子查询:

SELECT T1.TASKID,'TASKNAME' AS TASKNAME,T2.LOGDATES FROM T_FUN_TASK T1

LEFT JOIN (SELECT TASKID,

LOGDATES=(SELECT '_'+CONVERT(VARCHAR(100), LOGDATE, 111) FROM T_FUN_LOGBOOK WHERE TASKID=T1.TASKID FOR XML PATH('')) FROM T_FUN_LOGBOOK T1

GROUP BY TASKID) T2 ON T2.TASKID=T1.TASKID

ORDER BY T1.TASKID ASC

运行以上SQL后得到的结果为:

发现LOGDATES值的第一个下划线应该去掉,于是修改SQL,应用 STUFF函数去掉第一个下划线:

SELECT T1.TASKID,'TASKNAME' AS TASKNAME,T2.LOGDATES FROM T_FUN_TASK T1

LEFT JOIN (SELECT TASKID,

LOGDATES=STUFF((SELECT '_'+CONVERT(VARCHAR(100), LOGDATE, 111) FROM T_FUN_LOGBOOK WHERE TASKID=T1.TASKID FOR XML PATH('')),1,1,'') FROM T_FUN_LOGBOOK T1

GROUP BY TASKID) T2

ON T2.TASKID=T1.TASKID

ORDER BY T1.TASKID ASC

将结果转化为JSON 返回给前端之后,JS按照下划线分隔这个字段的值,即可以得到一个任务下面日志的填写情况。

GROUP_CONCAT 将mysql多条数据合并为一条

实现将多条数据合并为一条数据,在mysql中可以通过 GROUP_CONCAT 函数实现 上面是潇leader发我的和工作不相关的小小小需求描述,很明显是要把id和name相同的数据合并为一条,下面按 ...

mysql查询随机几条数据(速度快)

MySql查询随机几条数据 想到了 Max RAND 这几个函数 用以下2种办法都可以实现查询. 速度还行. 几十万数据左右, 没有什么问题. SELECT * FROM `news` WHERE i ...

不同数据库,查询前n条数据的SQL语句

不同的数据库,支持的SQL语法略有不同,以下是不同数据库查询前n条数据的SQl语句 SQL Server(MSSQL) SELECT TOP n * FROM table_name ORACLE SE ...

如何将多条update语句合并为一条

需求: 如何将多条update语句合并为一条update语句:如,update table1 set col='2012' where id='2014001'      update table1  ...

SQL 一列数据整合为一条数据

SQL 一列数据整合为一条数据: SELECT  STUFF(( SELECT distinct  ',' + 列名 FROM 表名 where  [条件] FOR XML PATH('') ), 1 ...

[MSSQL]找出一天数据中从第一条数据开始每累加1小时的数据

用Sql Server找出一天数据中从第一条数据开始每累加1小时的数据 -- ============================================= -- Author: Alle ...

gridview 绑定多个格式相同的数据源(数据查询合并)

在做项目时,要求在同一个GridView中同时显示不同分组中的前若干条数据 几个技术要点: 1.数据分组,本方法中未用group by 2.几个结果格式相同的查询合并绑定 3.取查询结果的前或后若干条 ...

sqlserver中 多条数据合并成一条数据 (stuff 与 for xml path 连用)

SQL 列转行,即多行合并成一条   需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district ...

SQL Server 分割字符串和合并多条数据为一行

分割字符串函数 create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20) ...

随机推荐

juqery合成事件toggle方法

当指定元素被点击时,在两个或多个函数之间轮流切换. 如果规定了两个以上的函数,则 toggle() 方法将切换所有函数.例如,如果存在三个函数,则第一次点击将调用第一个函数,第二次点击调用第二个函数, ...

spring mvc rest 方式

handler中编写方式: @RequestMapping("/{userName}/ajaxUser3.do") @ResponseBody public UserInfo aj ...

Nginx的知识分享,技术分享

3. Nginx常用命令管理及升级 查看nginx进程 ps -ef|grep nginx 说明:nginx的进程由主进程和工作进程组成. 启动nginx nginx 启动结果显示nginx的主线程和 ...

怎样生成一个顶点迭代器(MItMeshVertex)

最近修改一个maya中的jlCollisionDeformer工具,该工具有一个明显不足,变形后顶点分布太乱,无法满足生产需求.于是考虑对该变形后的顶点进行平滑处理.既然要做平滑处理就要获取当前点及与 ...

32bit GM命令

GM 命令[32位服务端GM命令] //announce message this basicly tells a announcement on the whole server.. you can ...

Scrapy模拟登录GitHub

d: 进入D盘 scrapy startproject GitHub 创建项目 scrapy genspider github github.com 创建爬虫 编辑github.py: # -*- c ...

ACS蚁群算法求解对称TSP旅行商问题的JavaScript实现

本来以为在了解蚁群算法的基础上实现这道奇怪的算法题并不难,结果实际上大相径庭啊.做了近三天时间,才改成现在这能勉强拿的出手的模样.由于公式都是图片,暂且以截图代替那部分内容吧,mark一记. 1 蚁群 ...

JAVA 面试须知

本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺. 1. Java中的原始数据类型都有哪些, ...

Android开发 使用 adb logcat 显示 Android 日志

作者 : 万境绝尘  转载请著名出处 eclipse 自带的 LogCat 工具太垃圾了, 开始用 adb logcat 在终端查看日志; 1. 解析 adb logcat 的帮助信息 在命令行中输入 ...

JAVA中字符串问题

JAVA中对象创建 通过new关键字来创建对象 通过newInstance()方法来创建对象 使用反序列化机制中IO流中恢复Java对象 通过clone()方法复制一个对象 直接量方式,String ...

server多笔记录拼接字符串 sql_sqlserver 将多行数据查询合并为一条数据相关推荐

  1. server多笔记录拼接字符串 sql_Java拼接“1亿行字符串”你会遇到什么问题?

    拼接"1亿行字符串"你会遇到什么问题? 本文将涉及到的三方面的内容,如下: 1,一个10万次的for循环,4种实现的性能对比 2,直接将For循环改为1亿次,遇到的问题 3,拓展 ...

  2. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  3. server多笔记录拼接字符串 sql_前台传入多个参数(数组格式),拼接成字符串中间用逗号隔开,传入到sql中用in查询....

    1.在开发中,我们常常需要把前台input传入的多个值的数组,拼接成一个字符串,中间用","隔开,再传入到后台做查询 String [] strs = {"A" ...

  4. sql server 多条记录数据合并为一条_如何利用Python实现SQL自动化?

    全文共5520字,预计学习时长16分钟 来源:Pexels 笔者在工作中经常要使用SQL,其不乏存在恼人的细微差异和种种限制,但说到底,它是数据行业的基石.因此,对于每一位数据领域的工作者,SQL都是 ...

  5. mysql查询前20条数据_SQL Server查询前N条记录的常用方法小结

    本文实例讲述了SQL Server查询前N条记录的常用方法.分享给大家供大家参考.具体如下: SQL Server查询前N条记录是我们经常要用到的操作,下面对SQL Server查询前N条记录的方法作 ...

  6. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...

  7. sql server 多条记录数据合并为一条_面试必备sql知识点——MySQL基础

    在刷了上百道sql题后,发现所有的题目都是基于某一个或几个知识点来做考察的,所以理清基础的知识细节,才能在题目考察到任意知识点时,找到解决线索. 温故而知新,学习在于总结,于是我再次对已经学习过的my ...

  8. mysql重复数据只取一条数据_My sql 中删除表中重复记录?只保留一条

    匿名用户 1级 2018-08-20 回答 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 sel ...

  9. mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: DELETE FROM`user`WHE ...

最新文章

  1. Bucking the stigma (留学生请摘掉有色眼镜看社区大学)
  2. 一站式机器学习平台TI-ONE是什么?——云+未来峰会开发者专场回顾
  3. 【Java面试题视频讲解】字符个数统计
  4. hadoop 源码编译---Win7(64位)
  5. 本地安装UCSC基因组浏览器
  6. 【EMNLP 2020】篇章要素识别和篇章结构评分(上)
  7. 浙江工业大学校赛 XiaoWei的战斗力
  8. 100+个程序员开发必备参考手册(在线及下载)
  9. C# WinForm中NotifyICon控件的用法
  10. java+ElementUI前后端分离旅游项目第三天 报团游
  11. windows便签工具在哪,怎么在便签上保存工作提醒事项
  12. ADB彻底清除小米电视广告,本人实测
  13. OneNote笔记备份
  14. 清华团队夺冠清华-新南威尔士中澳数据科学大赛!跨学科交叉人才走出国门
  15. 计算机表格填充,excel自动填充怎样快速填充一列?/excle填充工具
  16. 华为OD(外包)社招技术二面,总结复盘
  17. 满二叉树和完全二叉树的区别
  18. Mysql varchar类型长度计算(mysql字段长度计算)
  19. java环境jdk配置
  20. QAD任命新大中华区董事总经理

热门文章

  1. 2019河北单招计算机考试模拟试题,2019年河北单招文科数学模拟试题(一)【含答案】.docx...
  2. 误删照片音视频文件不要担心 几种方法解救慌乱的你
  3. 「Activiti精品 悟纤出品」核心类以及如何在SpringBoot集成说明 - 第328篇
  4. Maven项目依赖外部jar进行打包的两种方式
  5. Worthington产气荚膜梭菌神经氨酸酶的特征及测定
  6. phpstudy打不开localhost
  7. 9-2 time类的加工
  8. 开源=安全?RVN盗币事件复盘
  9. 使用Python创建excel文件成功后报错打不开
  10. Java - 说一下表达式语言(EL)的隐式对象及其作用。