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

Oracle验证查询:校验TransactionConfig表数据准确性

Oracle 查询:验证TransactionConfig的ConfigId数量是否符合预期

我们可以通过子查询+关联统计的方式实现需求,核心是先算出每个TransactionId对应的预期ConfigId数量,再和TransactionConfig中的实际记录数对比:

SELECT
    pt.TransactionId,
    pc.Expected_Config_Count,
    tc.Actual_Config_Count,
    CASE
        WHEN pc.Expected_Config_Count = tc.Actual_Config_Count THEN 1
        ELSE 0
    END AS Status
FROM
    -- 第一步:获取每个TransactionId对应的ProductId,以及该ProductId的预期ConfigId总数
    (
        SELECT
            pt.TransactionId,
            COUNT(pc.ConfigId) AS Expected_Config_Count
        FROM ProductTransaction pt
        LEFT JOIN ProductConfig pc ON pt.ProductId = pc.ProductId
        GROUP BY pt.TransactionId
    ) pc
-- 第二步:获取每个TransactionId在TransactionConfig中的实际ConfigId记录数
LEFT JOIN (
    SELECT
        TransactionId,
        COUNT(ConfigId) AS Actual_Config_Count
    FROM TransactionConfig
    GROUP BY TransactionId
) tc ON pc.TransactionId = tc.TransactionId
-- 可选:如果仅需验证存在TransactionConfig记录的交易,可将LEFT JOIN改为INNER JOIN
ORDER BY pc.TransactionId;

逻辑说明

  1. 内层子查询pc:通过ProductTransaction关联ProductConfig,按TransactionId分组统计出每个交易对应的产品应有的ConfigId总数(预期值)。
  2. 内层子查询tc:按TransactionId分组统计TransactionConfig中实际的ConfigId记录数(实际值)。
  3. 外层关联两个统计结果,用CASE判断预期与实际是否相等,输出Status(1表示匹配,0表示不匹配)。

示例验证

比如TransactionId 601关联ProductId 6,ProductConfig中ProductId 6有2条ConfigId记录(预期数2),但TransactionConfig中TransactionId 601只有1条ConfigId记录(实际数1),则该条记录的Status会显示为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:57:03