字符/字段数据的合并
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,字符的合并,更确切的说是字段数据的合并吧。现在很多公司,尤其是工厂,上下班都要刷卡。假如有以下的数据库表,记录着员工上下班的刷卡记录。但是这样直接导出或显示,不太好看,不够直观。下面实现把每个员工每天
千家信息网最后更新 2026年10月31日字符/字段数据的合并
字符的合并,更确切的说是字段数据的合并吧。现在很多公司,尤其是工厂,上下班都要刷卡。假如有以下的数据库表,记录着员工上下班的刷卡记录。但是这样直接导出或显示,不太好看,不够直观。下面实现把每个员工每天的刷卡时间横向显示。
Figure-1: 打卡记录
插入测试数据:
IF OBJECT_ID(N'dbo.CARD_RECORD','U') IS NOT NULLBEGIN DROP TABLE dbo.CARD_RECORD;ENDGOCREATE TABLE dbo.CARD_RECORD ( id_ INT IDENTITY(1,1) NOT NULL PRIMARY KEY, card_id INT NOT NULL, swipe_date DATETIME NOT NULL)GOINSERT INTO dbo.CARD_RECORD (card_id,swipe_date)SELECT '10001','2015-06-01 08:21'UNION ALLSELECT '10002','2015-06-01 08:22'UNION ALLSELECT '10001','2015-06-01 12:00'UNION ALLSELECT '10002','2015-06-01 12:01'UNION ALLSELECT '10001','2015-06-01 13:00'UNION ALLSELECT '10002','2015-06-01 13:01'UNION ALLSELECT '10002','2015-06-01 18:05'UNION ALLSELECT '10001','2015-06-01 18:12'UNION ALLSELECT '10002','2015-06-02 08:31'UNION ALLSELECT '10001','2015-06-02 08:42'UNION ALLSELECT '10001','2015-06-02 12:10'UNION ALLSELECT '10002','2015-06-02 12:11'UNION ALLSELECT '10001','2015-06-02 13:00'UNION ALLSELECT '10002','2015-06-02 13:11'UNION ALLSELECT '10001','2015-06-02 18:05'UNION ALLSELECT '10002','2015-06-02 18:12'UNION ALLSELECT '10002','2015-06-02 19:34'UNION ALLSELECT '10001','2015-06-03 08:36'UNION ALLSELECT '10002','2015-06-03 08:40'UNION ALLSELECT '10001','2015-06-03 12:20'UNION ALLSELECT '10002','2015-06-03 12:20'UNION ALLSELECT '10001','2015-06-03 12:55'UNION ALLSELECT '10002','2015-06-03 12:56'UNION ALLSELECT '10001','2015-06-03 18:05'GO
Code-1: 插入测试数据
创建字符/字段数据合并的函数:
IF OBJECT_ID(N'dbo.fn_time_list') IS NOT NULLBEGIN DROP FUNCTION dbo.fn_time_listENDGOCREATE FUNCTION dbo.fn_time_list ( @date DATETIME, @card_id NVARCHAR(100))RETURNS NVARCHAR(MAX)AS BEGIN DECLARE @char NVARCHAR(MAX) DECLARE @date2 DATE SET @char = '' SET @date = CAST(@date AS DATE) SET @date2 = DATEADD(DAY,1,CAST(@date AS DATE)) SELECT @char = @char + CONVERT(CHAR(5),swipe_date,108) + ',' FROM CARD_RECORD WHERE (swipe_date >= @date AND swipe_date < @date2) AND card_id=@card_id ORDER BY swipe_date ASC SET @char = CASE WHEN @char = '' THEN '' ELSE SUBSTRING(@char,1,LEN(@char)-1) END RETURN (@char)ENDGO
Code-2: 字符/字段数据合并函数
最后,把数据转换一下,展示:
SELECT DISTINCT card_id, CONVERT(char(10), swipe_date,23) AS swipe_date, dbo.fn_time_list(swipe_date,card_id) AS time_list2 FROM dbo.CARD_RECORD ORDER BY card_id ASC,swipe_date ASC;GO
Code-3: 转换显示
执行结果:
Figure-2: 转换后显示的效果
这里,还可以把竖向的刷卡时间,每个时间占一个字段,横向显示,方便统计等。不过会有刷卡次数的限制,一般来说,一天预留十次刷卡记录应该是足够了。
WITH CTE3 AS ( SELECT card_id ,CONVERT(CHAR(10),swipe_date,23) AS swipe_date ,CONVERT(CHAR(5),swipe_date,108) AS swipe_time FROM CARD_RECORD),CTE4 AS ( SELECT ROW_NUMBER() OVER (PARTITION BY card_id,swipe_date ORDER BY card_id ASC,swipe_date ASC,swipe_time ASC) AS row_no ,card_id ,swipe_date ,swipe_time FROM CTE3)SELECT card_id ,swipe_date ,MAX(CASE WHEN row_no = 1 THEN swipe_time ELSE '' END) AS time1 ,MAX(CASE WHEN row_no = 2 THEN swipe_time ELSE '' END) AS time2 ,MAX(CASE WHEN row_no = 3 THEN swipe_time ELSE '' END) AS time3 ,MAX(CASE WHEN row_no = 4 THEN swipe_time ELSE '' END) AS time4 ,MAX(CASE WHEN row_no = 5 THEN swipe_time ELSE '' END) AS time5 ,MAX(CASE WHEN row_no = 6 THEN swipe_time ELSE '' END) AS time6 ,MAX(CASE WHEN row_no = 7 THEN swipe_time ELSE '' END) AS time7 ,MAX(CASE WHEN row_no = 8 THEN swipe_time ELSE '' END) AS time8 ,MAX(CASE WHEN row_no = 9 THEN swipe_time ELSE '' END) AS time9 ,MAX(CASE WHEN row_no = 10 THEN swipe_time ELSE '' END) AS time10FROM CTE4GROUP BY card_id,swipe_dateORDER BY card_id ASC,swipe_date ASC;GO
Code-4: 转为每个时间占用一个字段
最终的效果:
Figure-3: 最终显示的效果
数据
字段
时间
字符
效果
上下
上下班
函数
员工
横向
测试
好看
直观
一般来说
不够
公司
工厂
数据库
次数
结果
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
湖北九亚互联网络科技有限公司
山东特亿宝互联网科技有限公司
没上市的科技互联网公司
互联网科技排名
贷财互联网科技
智慧科技互联网
融势互联网科技
深圳天众互联网科技公司
哈尔滨秒房互联网科技有限公司
汉立互联网科技有限公司联系电话
深圳国际航运科技和互联网
福州新华互联网科技学校 知乎
欧洲十大科技互联网公司
青岛科技大学互联网大赛研究生
宇信科技在杭州互联网排第几
广州燕处互联网科技有限公司
云鲸互联网络科技有限公司
第三届互联网大会安防黑科技
武汉亿视互联网科技有限公司
互联网科技垄断
互联网为科技
高科技与互联网
中国 科技 互联网
贷财互联网科技
互联网养老 桔豆科技
科技类公司包括互联网吗
燊美集互联网科技有限公司
工业互联网展湾科技股份有限公司
陕西彩京云互联网科技有限公司