Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 游标:最大整数值保留在行中,其他值在前一行中变为零_Sql_Sql Server - Fatal编程技术网

Sql 游标:最大整数值保留在行中,其他值在前一行中变为零

Sql 游标:最大整数值保留在行中,其他值在前一行中变为零,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 请任何人帮我做这件事,我被告知要用游标来做。你

我的表格如下:

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

请任何人帮我做这件事,我被告知要用游标来做。你可以使用窗口功能和可更新的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;

我希望您将租金存储为一个数字,而不是字符串。不要对数值使用单引号。我被告知使用游标是出于什么原因?这是学习游标的家庭作业吗?或者其他原因?从阅读有关游标的文档开始-它有一些示例。或者只是在互联网上搜索例子。但是试试看。一个提示-选择您的行并按租金降序排列,只需跳过第一行即可。另一个提示-选择所有小于最大值的行。