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

SQL Server中按阈值统计ERR_CD并筛选插入临时表的实现方法

SQL Server 实现方案

场景说明

现有表(假设表名为OriginalTable)包含PK_ID、ERR_CD、ERR_THRESHOLD字段,需统计每个ERR_CD的记录行数,筛选出行数达到对应ERR_THRESHOLD的所有记录,并插入临时表。

方法一:使用窗口函数(推荐,性能更优)

-- 提前创建临时表(按需定义字段类型,需与原表匹配)
CREATE TABLE #TempResult (
    PK_ID INT,
    ERR_CD VARCHAR(50),
    ERR_THRESHOLD INT
);

-- 插入符合条件的记录
INSERT INTO #TempResult (PK_ID, ERR_CD, ERR_THRESHOLD)
SELECT 
    PK_ID,
    ERR_CD,
    ERR_THRESHOLD
FROM (
    -- 子查询统计每个ERR_CD的总条数
    SELECT 
        *,
        COUNT(*) OVER (PARTITION BY ERR_CD) AS ErrTotalCount
    FROM OriginalTable
) AS SubQuery
-- 筛选出行数≥对应阈值的记录
WHERE ErrTotalCount >= ERR_THRESHOLD;

方法二:分组统计后关联原表

-- 创建临时表
CREATE TABLE #TempResult (
    PK_ID INT,
    ERR_CD VARCHAR(50),
    ERR_THRESHOLD INT
);

-- 插入数据
INSERT INTO #TempResult (PK_ID, ERR_CD, ERR_THRESHOLD)
SELECT 
    ot.PK_ID,
    ot.ERR_CD,
    ot.ERR_THRESHOLD
FROM OriginalTable ot
-- 关联分组统计的结果
JOIN (
    SELECT 
        ERR_CD,
        COUNT(*) AS ErrTotalCount,
        MAX(ERR_THRESHOLD) AS ErrThreshold -- 假设同ERR_CD的阈值一致,取MAX/MIN均可
    FROM OriginalTable
    GROUP BY ERR_CD
) AS AggData ON ot.ERR_CD = AggData.ERR_CD
WHERE AggData.ErrTotalCount >= AggData.ErrThreshold;

注意事项

  • 若同一ERR_CD存在不同的ERR_THRESHOLD值,需明确筛选逻辑(比如取该ERR_CD的最大阈值,或每条记录与自身阈值比较),上述示例默认同ERR_CD的阈值统一。
  • 临时表字段类型需与原表对应字段保持一致,可根据实际业务调整(比如ERR_CD可能为INT类型)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:42:08