我正在努力解决如何一步到位的问题。
我的列的值在1到+ -20之间变化。与此相关的是第二个值,通常介于1和5之间。
我想要做的是当数字1值出现超过一次然后我需要将第2列中的值更新为99但只是第2列中的最高数字。
我添加了一张图片以便更好地解释。 基本上id是唯一的,如果值1出现的次数更多,那么我需要更新值2,其中值2中的值是最高值。
答案 0 :(得分:0)
您可以使用row_number()
查找No2
值最高的行,然后使用count() over()
检查No1
是否存在多行值。
MS SQL Server 2008架构设置:
create table YourTable
(
No1 int,
No2 int
);
insert into YourTable values
(1, 3),
(1, 2),
(2, 1);
查询1 :
with C as
(
select No2,
row_number() over(partition by No1 order by No2 desc) as rn,
count(*) over(partition by No1) as c
from YourTable
)
update C
set No2 = 99
where rn = 1 and
c > 1
<强> Results 强>:
查询2 :
select *
from YourTable
<强> Results 强>:
| NO1 | NO2 |
|-----|-----|
| 1 | 99 |
| 1 | 2 |
| 2 | 1 |