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

SSRS 2012:提取指定表Status字段新旧值变更记录的方法

需求实现说明

实现识别rqia_registeredperson表中Status字段的变更并提取新旧值的需求不算特别复杂,但需要基于Dynamics CRM的审计表结构做扩展查询——你当前的查询仅用到了Audit表,而字段的具体新旧值存储在AuditDetail表中,AttributeMask只是用来标记哪些字段发生了变更,不包含实际值。

关键调整点

  • 关联AuditDetail表,获取字段变更的具体新旧值
  • 过滤出目标Status字段(假设其逻辑名为statuscode,如果是自定义字段请替换为实际逻辑名)
  • 处理选项集类型字段的新旧值(如果Status是选项集,需关联StringMap表转换为可读文本)

修改后的查询语句

SELECT 
    ev.LogicalName,
    CASE 
        WHEN au.Operation = 1 THEN 'Create' 
        WHEN au.Operation = 2 THEN 'Update' 
        WHEN au.Operation = 3 THEN 'Delete' 
        WHEN au.Operation = 4 THEN 'Access' 
    END AS Action, 
    FORMAT(DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), au.CreatedOn), 'dd/MM/yyyy HH:mm') AS AuditCreated, 
    fr.rqia_registeredpersonidnumber AS RegisteredPerson,
    -- 获取Status字段的新旧值
    ad.AttributeLogicalName AS ChangedField,
    -- 若Status是选项集,用StringMap转换为文本;否则直接取NewValue/OldValue
    ISNULL(sm_new.Value, ad.NewValue) AS NewStatusValue,
    ISNULL(sm_old.Value, ad.OldValue) AS OldStatusValue
FROM [Audit] au
INNER JOIN EntityView ev ON au.ObjectTypeCode = ev.ObjectTypeCode 
INNER JOIN Filteredrqia_registeredperson fr ON au.ObjectId = fr.rqia_registeredpersonid
-- 关联AuditDetail获取字段变更详情
INNER JOIN AuditDetail ad ON au.AuditId = ad.AuditId
-- 关联StringMap转换选项集值为可读文本(仅当Status是选项集时需要)
LEFT JOIN StringMap sm_new 
    ON ad.NewValue = sm_new.AttributeValue 
    AND sm_new.AttributeName = 'statuscode' 
    AND sm_new.ObjectTypeCode = au.ObjectTypeCode
LEFT JOIN StringMap sm_old 
    ON ad.OldValue = sm_old.AttributeValue 
    AND sm_old.AttributeName = 'statuscode' 
    AND sm_old.ObjectTypeCode = au.ObjectTypeCode
WHERE 
    ev.LogicalName = 'rqia_registeredperson' 
    AND fr.rqia_registeredpersonidnumber = 'RP023523'
    -- 过滤仅Status字段的变更记录
    AND ad.AttributeLogicalName = 'statuscode'
ORDER BY ev.LogicalName, AuditCreated

补充说明

  1. 如果你的Status字段不是选项集(比如是文本/数值类型),可以去掉StringMap的关联,直接使用ad.NewValue和ad.OldValue
  2. 需确认Status字段的实际逻辑名,替换语句中的statuscode为对应名称
  3. 原查询中的GROUP BY可以去掉,因为我们现在是按每条字段变更记录返回,不需要分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:05:04