You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SQL临时表#TblName查找最新OnHold变更操作的用户名

问题:提取执行OnHold状态切换为True的最新操作用户名

测试数据SQL

IF OBJECT_ID('tempdb..#TblName') IS NOT NULL
    BEGIN
        DROP TABLE #TblName
    END

CREATE TABLE #TblName (
    Key1 varchar(50)
    ,DateStamped date
    ,LogText nvarchar(max)
)

INSERT INTO #TblName VALUES ('PF1','2021-09-01','Gabriela.Santa 18:26:25  OnHold: False -> True  OnHoldDate:  -> 9/1/2021  OnHoldReasonCode:  -> NEWPDCN')
INSERT INTO #TblName VALUES ('PF1','2022-12-26','NhatCuong.Nguyen 08:21:18  OnHold: True -> False  OnHoldDate: 12/23/2022 ->   OnHoldReasonCode: NoCnf ->   OnHoldComment_c: 3D for Chemical miliing change, need to update CM BDWG ->   NhatCuong.Nguyen 15:10:42  OnHold: False -> True  OnHoldDate:  -> 12/26/2022  OnHoldReasonCode:  -> NoCnf  OnHoldComment_c:  -> 3D for Chemical miliing change, need to update CM BDWG')
INSERT INTO #TblName VALUES ('PF1','2023-01-05','NhatCuong.Nguyen 13:37:42  OnHold: True -> False  OnHoldDate: 12/26/2022 ->   OnHoldReasonCode: NoCnf ->   OnHoldComment_c: 3D for Chemical miliing change, need to update CM BDWG ->   Quoc.Phan 14:36:24  OnHold: False -> True  OnHoldDate:  -> 1/5/2023  OnHoldReasonCode:  -> NoCnf  OnHoldComment_c:  -> 3D for Chemical miliing change, need to update CM BDWG  Nguyen.Anh 14:55:42  OnHold: True -> False  OnHoldDate: 1/5/2023 ->   OnHoldReasonCode: NoCnf ->   OnHoldComment_c: 3D for Chemical miliing change, need to update CM BDWG ->   Quoc.Phan 14:57:29  OnHold: False -> True  OnHoldDate:  -> 1/5/2023  OnHoldReasonCode:  -> NoCnf  OnHoldComment_c:  -> 3D for Chemical miliing change, need to update CM BDWG')
INSERT INTO #TblName VALUES ('PF1','2022-12-23','ThiThanh.Nguyen 10:12:22  AnalysisCode:  -> MachSO  Quoc.Phan 16:11:22  OnHold: False -> True  OnHoldDate:  -> 12/23/2022  OnHoldReasonCode:  -> NoCnf  OnHoldComment_c:  -> 3D for Chemical miliing change, need to update CM BDWG')
INSERT INTO #TblName VALUES ('PF1','2021-09-16','Valentin.Opris 12:08:52  OnHold: True -> False  OnHoldDate: 9/1/2021 ->   OnHoldReasonCode: NEWPDCN ->   Bogdan.Stefanescu 17:19:26  OnHold: False -> True  OnHoldDate:  -> 9/16/2021  OnHoldReasonCode:  -> NEWPDCN  Jothimani.Alagappan 17:29:53  ChangeRequestReason_c: CM_V0107 Spirit Sunshine - Move ST in house -> CM_V0330 SPIRIT SUNSHINE - Update Manufacturing Drawing PDCN review')

需求说明

从#TblName表的LogText字段中,筛选出所有执行了OnHold: False -> True操作的记录,找到其中时间最晚的事务对应的用户名,最终返回Key1、DateStamped和Username三个字段。

解决方案SQL

WITH SplitLogs AS (
    -- 拆分每个LogText中的操作条目,识别用户名开头的操作记录
    SELECT 
        t.Key1,
        t.DateStamped,
        -- 提取完整操作片段
        SUBSTRING(t.LogText, s.StartPos, 
                  COALESCE(NULLIF(CHARINDEX(' ', t.LogText, CHARINDEX(' ', t.LogText, s.StartPos)+8), 0), LEN(t.LogText)+1) - s.StartPos) AS Operation,
        -- 提取用户名
        SUBSTRING(t.LogText, s.StartPos, CHARINDEX(' ', t.LogText, s.StartPos) - s.StartPos) AS Username,
        -- 拼接完整操作时间(日期+时分秒)
        CAST(t.DateStamped AS DATETIME) + CAST(SUBSTRING(t.LogText, CHARINDEX(' ', t.LogText, s.StartPos)+1, 8) AS DATETIME) AS OperationTime
    FROM #TblName t
    -- 生成辅助拆分位置,匹配用户名格式(包含.)的起始点
    CROSS APPLY (
        SELECT 1 AS StartPos
        UNION ALL
        SELECT CHARINDEX(' ', t.LogText, pos) + 1
        FROM (
            SELECT NUMBER + 1 AS pos
            FROM master.dbo.spt_values
            WHERE TYPE = 'P' AND NUMBER < LEN(t.LogText)
        ) pos_list
        WHERE SUBSTRING(t.LogText, pos, CHARINDEX(' ', t.LogText, pos) - pos) LIKE '%.%'
    ) s(StartPos)
    WHERE SUBSTRING(t.LogText, s.StartPos, CHARINDEX(' ', t.LogText, s.StartPos) - s.StartPos) LIKE '%.%'
),
TargetOperations AS (
    -- 筛选目标操作并按时间倒序排名
    SELECT 
        Key1,
        DateStamped,
        Username,
        OperationTime,
        ROW_NUMBER() OVER(ORDER BY OperationTime DESC) AS rn
    FROM SplitLogs
    WHERE Operation LIKE '%OnHold: False -> True%'
)
-- 获取最新的一条记录
SELECT Key1, DateStamped, Username
FROM TargetOperations
WHERE rn = 1

预期输出

Key1DateStampedUsername
PF12023-01-05Quoc.Phan

内容的提问来源于stack exchange,提问作者TKN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:55:13