提问人:Sathish Kumar 提问时间:9/14/2023 最后编辑:LittlefootSathish Kumar 更新时间:9/14/2023 访问量:42
连续两次序列 (1,2) 基于 SQL Server 中的另一个值
sequence twice continously (1,2) based on another value in sql server
问:
我需要根据另一个列值 empid 对 1,2 进行排序。每列值我需要在序列输出列中有两个值
例如虚拟数据
empid | deptid |
---|---|
1 | 1 |
需要 O/P
empid | deptid | 序列 |
---|---|---|
1 | 1 | 1 |
1 | 1 | 2 |
我们尝试使用 rownumber() partion by,但它只根据另一列 deptid 排序一次,但我们需要对单个 empid 的 1,2 进行两次排序和递增
答:
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能利用它来为自己谋取利益。
评论
CROSS JOIN
到包含值的数据集(例如表构造)中,并在其中..?VALUES
1
2