【问题标题】:How to create sequence number based on a condition of another table?如何根据另一个表的条件创建序列号?
【发布时间】:2017-04-15 08:20:58
【问题描述】:

我正在尝试在表中添加一列,但我一直在试图找出一种将序列号分配给该列的方法。

  • IDC_Seq_No 列来自一个表 (A)
  • D_Seq_NoType 来自另一个表 (B)。

我正在尝试将 2 个表连接在一起,任何时候 C_Seq_No 以数字“1”显示一个 ID 三次,然后 D_Seq_No would 为该 ID 创建一个序列号 1, 2, and 3

这是我在运行查询以加入 2 表时所拥有的,因为我尚未为 D_Seq_No 列分配任何内容:

      TABLE A                          TABLE B
ID           C_Seq_No    |    D_Seq_No         Type
123              1       |      NULL            02
123              1       |      NULL            04
123              1       |      NULL            06
123              2       |      NULL            03
123              2       |      NULL            05
123              2       |      NULL            07

这是我希望在加入这 2 个表时查询结果集中的样子:

ID           C_Seq_No        D_Seq_No         Type
123              1             1               02
123              1             2               04
123              1             3               06
123              2             1               03
123              2             2               05
123              2             3               07

【问题讨论】:

  • 创建该结果的查询是什么?因为如果你有两个表,就没有任何连接来生成它。
  • 更新表 B 集 D_Seq_No
  • 该查询不连接表 A 和 B

标签: sql sql-server sql-server-2012 sequence alter-table


【解决方案1】:

您正在寻找 row_number。调用如下所示:

select . . .,
       row_number() over (partition by id, c_seq_no order by type) as d_seq_no,
       type
from . . .

【讨论】:

  • 如果 id 和 c_seq_no 来自另一个表,可以这样做吗?我们不能使用 join 语句对吗?
  • @EkansDasnakE 。 . .不要求列来自同一个表。
猜你喜欢
  • 2023-03-25
  • 2018-10-24
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多