连续两次序列 (1,2) 基于 SQL Server 中的另一个值

sequence twice continously (1,2) based on another value in sql server

提问人:Sathish Kumar 提问时间:9/14/2023 最后编辑:LittlefootSathish Kumar 更新时间:9/14/2023 访问量:42

问:

我需要根据另一个列值 empid 对 1,2 进行排序。每列值我需要在序列输出列中有两个值

例如虚拟数据

empid deptid
1 1

需要 O/P

empid deptid 序列
1 1 1
1 1 2

我们尝试使用 rownumber() partion by,但它只根据另一列 deptid 排序一次,但我们需要对单个 empid 的 1,2 进行两次排序和递增

sql-server 序列

评论

3赞 Thom A 9/14/2023
你的标题是“SQL Server”,那么你为什么也标记了 Oracle?您真正使用的是什么 RDBMS?
0赞 Thom A 9/14/2023
CROSS JOIN到包含值的数据集(例如表构造)中,并在其中..?VALUES12

答:

0赞 Littlefoot 9/14/2023 #1

原来您使用的是MS SQL Server。在这种情况下,一种选择是将当前表与虚构的表联接(两个语句的联合)。select

示例表:

select * from dummy;

     EMPID     DEPTID
---------- ----------
         1          1
         3          4

查询:

select d.empid, d.deptid, u.sequence 
from dummy d cross join (select 1 as sequence union all
                         select 2) u;

结果:

     EMPID     DEPTID   SEQUENCE
---------- ---------- ----------
         1          1          1
         1          1          2
         3          4          1
         3          4          2

看看小提琴

评论

0赞 Charlieface 9/14/2023
cross join (values (1), (2)) u([sequence])看起来更简单
0赞 Littlefoot 9/15/2023
无论如何,@Charlie,对于所有说MS SQL Server的人。我几乎无法拼写它 - 谢谢你的评论!我希望OP能利用它来为自己谋取利益。