如何将此更新代码与下面的代码合并?

时间:2019-12-23 19:11:44

标签: sql-server tsql sql-update

基本上,如果下面的此功能为真,我将尝试更新日期。

我将在MS Visual Studio中使用此代码将其与选中列表框中选中项的索引进行比较...

UPDATE rent 
SET dat_vrac = CONVERT(smalldatetime, CURRENT_TIMESTAMP)


(SELECT CAST(rownumber AS VARCHAR)
FROM (SELECT dat_vrac, row_number() 
       OVER (order by dat_vrac) AS 'rownumber'
       FROM rent) TableExpressionsMustHaveAnAliasForDumbReasons
WHERE (
  cast (rownumber as varchar)
  ) > '0')


SqlCommand komanda = new SqlCommand("WITH CTE_RENT AS ( SELECT dat_vrac, ROW_NUMBER() OVER (order by dat_vrac) rn FROM rent) UPDATE CTE_RENT SET dat_vrac = CONVERT(SMALLDATETIME, CURRENT_TIMESTAMP) WHERE rn ='" + chlb_return.Items.Cast<int>() + "'", konekcija);

1 个答案:

答案 0 :(得分:1)

由于您不喜欢对子查询使用别名。

ROW_NUMBER以1开头,而不是0。

所以尝试一下:

WITH CTE_RENT AS
(
    SELECT dat_vrac
    , ROW_NUMBER() OVER (ORDER BY dat_vrac) rn
    FROM rent
)
UPDATE CTE_RENT 
SET dat_vrac = CONVERT(SMALLDATETIME, CURRENT_TIMESTAMP)
WHERE rn > 1

但是可能是ROW_NUMBER需要用您只知道的东西进行分区。

    , ROW_NUMBER() OVER (PARTITION BY house_id ORDER BY dat_vrac) rn