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

如何在SQL Server中基于#T1和#T2生成指定循环关联输出?

实现两个表的循环匹配输出

嘿,这问题我熟!你想要把#T1里的A、B、C循环对应#T2的1到7,输出交替循环的结果对吧?我给你整理好解决方案啦👇

首先先确认你的输入表结构和数据:

CREATE TABLE #T1 (ID VARCHAR(10))
INSERT INTO #T1 SELECT 'A' UNION SELECT 'B' UNION SELECT 'C'

CREATE TABLE #T2 (ID VARCHAR(10))
INSERT INTO #T2 SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7

解决方案SQL

SELECT 
    t1.ID,
    t2.ID
FROM (
    -- 为#T2的每条数据按ID顺序生成行号
    SELECT ID, ROW_NUMBER() OVER (ORDER BY ID) AS rn
    FROM #T2
) t2
JOIN (
    -- 为#T1生成行号,同时获取总条数用于循环计算
    SELECT ID, ROW_NUMBER() OVER (ORDER BY ID) AS rn, COUNT(*) OVER () AS cnt
    FROM #T1
) t1 ON (t2.rn - 1) % t1.cnt + 1 = t1.rn
ORDER BY t2.rn

思路解释

  • 第一步给#T2的数据按ID排序生成行号rn,确保我们能按1到7的顺序处理每条数据;
  • 第二步给#T1的数据生成行号,同时用COUNT(*) OVER ()拿到#T1的总记录数(这里是3);
  • 核心是用取模运算(t2.rn - 1) % t1.cnt + 1,让#T2的行号循环对应#T1的行号:比如行号4对应(4-1)%3+1=1,也就是#T1的A;行号5对应(5-1)%3+1=2,对应B,以此类推;
  • 最后按#T2的行号排序,就能得到你期望的循环输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:37:57