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

SQL Server中按empid生成1、2重复序列的实现问题

为每个empid生成两行带序列的记录

ROW_NUMBER()函数仅能对现有行进行编号,无法生成新行,所以要实现每个empid对应两行记录的需求,最直接的方法是用**交叉连接(CROSS JOIN)**搭配一个包含1、2的序列集合。

具体实现代码

假设你的源表名为Employees,包含empid和deptid列,SQL语句如下:

SELECT 
    e.empid,
    e.deptid,
    s.sequence
FROM 
    Employees e
CROSS JOIN 
    (VALUES (1), (2)) AS s(sequence)
ORDER BY 
    e.empid, s.sequence;

原理说明

  • (VALUES (1), (2)) AS s(sequence) 生成一个临时序列表,包含两个固定值:1和2。
  • CROSS JOIN 会将源表中的每一行与临时序列表的每一行进行组合,这样每个empid对应的原记录会被复制两次,分别对应sequence为1和2的行。

示例验证

如果源表输入是:

empiddeptid
11

执行上述SQL后,输出结果为:

empiddeptidsequence
111
112

完全符合需求效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:03:13