简体   繁体   English

如何在 SSMS 中自动增加子集?

[英]How do I auto-increment subsets in SSMS?

Consider a MWE with a table with four columns: ORDER_BASIS, GROUP_1, GROUP_2 and ORDER_VALUE.考虑一个具有四列表的 MWE:ORDER_BASIS、GROUP_1、GROUP_2 和 ORDER_VALUE。 The first three are populated with data and I would like to now populate ORDER_VALUE with an integer (starting with 1 for each subset) that indicates the order of the ORDER_BASIS value for a given combination of GROUP_1 and GROUP_2.前三个用数据填充,我现在想用 integer(每个子集从 1 开始)填充 ORDER_VALUE,它指示给定 GROUP_1 和 GROUP_2 组合的 ORDER_BASIS 值的顺序。 For example:例如:

ORDER_BASIS ORDER_BASIS GROUP_1 GROUP_1 GROUP_2 GROUP_2 ORDER_VALUE ORDER_VALUE
1.1 1.1 A一个 X X NULL NULL
2.4 2.4 A一个 X X NULL NULL
7.3 7.3 A一个 X X NULL NULL
2.1 2.1 B X X NULL NULL
3.4 3.4 B X X NULL NULL
7.1 7.1 A一个 Y NULL NULL
8.4 8.4 A一个 Y NULL NULL
9.6 9.6 A一个 Y NULL NULL

should become:应该变成:

ORDER_BASIS ORDER_BASIS GROUP_1 GROUP_1 GROUP_2 GROUP_2 ORDER_VALUE ORDER_VALUE
1.1 1.1 A一个 X X 1 1
2.4 2.4 A一个 X X 2 2
7.3 7.3 A一个 X X 3 3
2.1 2.1 B X X 1 1
3.4 3.4 B X X 2 2
7.1 7.1 A一个 Y 1 1
8.4 8.4 A一个 Y 2 2
9.6 9.6 A一个 Y 3 3

Assuming SSMS means you are using SQL Server, you can apply a row_number window function here in a derived table (or CTE) and directly update it:假设SSMS意味着您正在使用 SQL 服务器,您可以应用row_number window function 在派生表(或 CTE)中直接更新它:

update t set Order_Value = rn 
from (
    select *, Row_Number() over(partition by group_1, group_2 order by order_basis) rn
    from t
    where Order_Value is null
)t;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM