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

存储过程中汇总不同临时表内工单数据的技术需求

我来帮你搞定这个工单汇总的需求!咱们可以通过SQL的关联查询或合并分组的方式,把两个临时表的工单数据汇总到新临时表里。下面给你具体的实现思路和代码示例:

实现步骤与示例代码

1. 先明确临时表结构(基于需求假设)

假设你的两个临时表字段是对齐的,结构如下:

  • 电话工单临时表:#Temp_PhoneTickets,字段包含 Category(分类)、Dept_D1(部门d1)、Dept_D2(部门d2)、TicketNum(工单数量)
  • IVR工单临时表:#Temp_IVRTickets,字段与上面完全一致

2. 方法一:全外关联+分组汇总(适合预统计过数量的临时表)

如果两个临时表已经是按分类、部门统计好的工单数量,我们可以用全外关联把两边的数据对齐,再计算各类型工单总数:

-- 创建汇总临时表
CREATE TABLE #Temp_CombinedTickets (
    Category VARCHAR(50),
    Dept_D1 VARCHAR(50),
    Dept_D2 VARCHAR(50),
    TotalPhoneTickets INT,
    TotalIVRTickets INT,
    GrandTotal INT
)

-- 插入汇总数据
INSERT INTO #Temp_CombinedTickets 
SELECT
    COALESCE(p.Category, i.Category) AS Category,
    COALESCE(p.Dept_D1, i.Dept_D1) AS Dept_D1,
    COALESCE(p.Dept_D2, i.Dept_D2) AS Dept_D2,
    ISNULL(SUM(p.TicketNum), 0) AS TotalPhoneTickets,
    ISNULL(SUM(i.TicketNum), 0) AS TotalIVRTickets,
    ISNULL(SUM(p.TicketNum), 0) + ISNULL(SUM(i.TicketNum), 0) AS GrandTotal
FROM #Temp_PhoneTickets p
FULL OUTER JOIN #Temp_IVRTickets i
    ON p.Category = i.Category
    AND p.Dept_D1 = i.Dept_D1
    AND p.Dept_D2 = i.Dept_D2
GROUP BY
    COALESCE(p.Category, i.Category),
    COALESCE(p.Dept_D1, i.Dept_D1),
    COALESCE(p.Dept_D2, i.Dept_D2)

3. 方法二:合并后透视统计(适合单条工单存储的临时表)

如果两个临时表是存储单条工单记录(未预统计数量),可以先合并所有记录,再用条件统计分类各类型工单:

-- 创建汇总临时表
CREATE TABLE #Temp_CombinedTickets (
    Category VARCHAR(50),
    Dept_D1 VARCHAR(50),
    Dept_D2 VARCHAR(50),
    PhoneTicketCount INT,
    IVRTicketCount INT,
    TotalCount INT
)

-- 插入数据:先合并工单并标记类型,再分组统计
INSERT INTO #Temp_CombinedTickets
SELECT
    Category,
    Dept_D1,
    Dept_D2,
    SUM(CASE WHEN TicketType = 'Phone' THEN 1 ELSE 0 END) AS PhoneTicketCount,
    SUM(CASE WHEN TicketType = 'IVR' THEN 1 ELSE 0 END) AS IVRTicketCount,
    COUNT(*) AS TotalCount
FROM (
    -- 合并两个临时表,添加工单类型标识
    SELECT Category, Dept_D1, Dept_D2, 'Phone' AS TicketType FROM #Temp_PhoneTickets
    UNION ALL
    SELECT Category, Dept_D1, Dept_D2, 'IVR' AS TicketType FROM #Temp_IVRTickets
) AS CombinedRawData
GROUP BY Category, Dept_D1, Dept_D2

4. 关键注意事项

  • 确保两个临时表的Category、Dept_D1、Dept_D2字段类型完全一致,避免关联或分组时出现隐式转换错误
  • 如果使用SQL Server,#开头是会话级临时表,仅当前连接可见;如果需要跨会话访问可以用##全局临时表
  • 存储过程结束前记得清理临时表(若不需要保留):DROP TABLE IF EXISTS #Temp_PhoneTickets, #Temp_IVRTickets, #Temp_CombinedTickets

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:02:47