[英]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.