日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 server多笔记录拼接字符串 sql_sqlserver 将多行数据查询合并为一条数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有這樣一個需求:表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 将多行数据查询合并为一条数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。