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

如何按Call Type的Answer值拆分含相同ID的数据集至临时表?

问题:按Call Type对应的Answer值拆分数据集到临时表

现有数据集包含Question、Answer、ID三列,其中Question分为三类:Call Type、Date、其他问题;对应的Answer分别为Initial Checking/Second Checking、日期值、其他回答。需要将同一ID下的所有记录,按Call Type对应的Answer值拆分到不同临时表中。

示例数据集

QuestionAnswerID
Call TypeInitial Checking1234
Date1/1/20241234
你叫什么名字Mike1234
你的住址是哪里LA1234
Call TypeSecond Checking4567
Date5/1/20244567
你的邮编是多少555554567
你的城市是哪里Miami4567
Call TypeInitial Checking7891
Date4/2/20247891
你叫什么名字Jenny7891

目标结果

临时表#INITIAL(对应Initial Checking)

QuestionAnswerID
Call TypeInitial Checking1234
Date1/1/20241234
你叫什么名字Mike1234
你的住址是哪里LA1234
Call TypeInitial Checking7891
Date4/2/20247891
你叫什么名字Jenny7891

临时表#SECOND(对应Second Checking)

QuestionAnswerID
Call TypeSecond Checking4567
Date5/1/20244567
你的邮编是多少555554567

尝试的SQL(无法实现需求)

SELECT R* INTO #INITIAL 
FROM #Result1 R 
WHERE R.Answer = 'Initial Checking'  

解决方案

核心思路

原SQL仅筛选了Answer='Initial Checking'的行(即Call Type那一行),但我们需要提取同一ID下的所有记录——因为这些记录属于同一个Call Type分组。正确的做法是先找到对应Call Type的所有ID,再关联提取这些ID的全部数据。

实现代码

创建#INITIAL临时表

WITH TargetIDs AS (
    -- 先获取所有属于Initial Checking的ID
    SELECT ID
    FROM #Result1
    WHERE Question = 'Call Type' AND Answer = 'Initial Checking'
)
SELECT r.* INTO #INITIAL
FROM #Result1 r
JOIN TargetIDs t ON r.ID = t.ID;

创建#SECOND临时表

WITH TargetIDs AS (
    -- 先获取所有属于Second Checking的ID
    SELECT ID
    FROM #Result1
    WHERE Question = 'Call Type' AND Answer = 'Second Checking'
)
SELECT r.* INTO #SECOND
FROM #Result1 r
JOIN TargetIDs t ON r.ID = t.ID;

是否需要PARTITION BY?

不需要。PARTITION BY主要用于窗口函数(如排名、分组聚合计算),而当前需求是按ID分组提取完整记录,用CTE+关联查询即可实现,无需窗口函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:48:17