Sql 游标:最大整数值保留在行中,其他值在前一行中变为零
我的表格如下: myTable t1Sql 游标:最大整数值保留在行中,其他值在前一行中变为零,sql,sql-server,Sql,Sql Server,我的表格如下: myTable t1 ID RENT ---------- 10 2000 10 5000 10 7000 10 1000 10 500 我想用“0”整数值更新租金上的所有值,但最大租金值保持为I-e“7000”,因此我的表将如下所示: ID RENT ---------- 10 0 10 0 10 7000 10 0 10 0 请任何人帮我做这件事,我被告知要用游标来做。你
ID RENT
----------
10 2000
10 5000
10 7000
10 1000
10 500
我想用“0”整数值更新租金上的所有值,但最大租金值保持为I-e“7000”,因此我的表将如下所示:
ID RENT
----------
10 0
10 0
10 7000
10 0
10 0
请任何人帮我做这件事,我被告知要用游标来做。你可以使用窗口功能和可更新的CTE:
with toudpate as (
select t.*, max(rent) over (partition by id) as max_rent
from t
)
update toupdate
set rent = 0
where rent < max_rent;
我希望您将租金存储为一个数字,而不是字符串。不要对数值使用单引号。我被告知使用游标是出于什么原因?这是学习游标的家庭作业吗?或者其他原因?从阅读有关游标的文档开始-它有一些示例。或者只是在互联网上搜索例子。但是试试看。一个提示-选择您的行并按租金降序排列,只需跳过第一行即可。另一个提示-选择所有小于最大值的行。