T-SQL - ISNULL([Col1],索引)??? - 这可能吗?

时间:2017-11-09 16:14:33

标签: sql tsql sql-server-2016

在Azure SQL Server中,是否可以用索引值替换NULLS?

换句话说,我有一个通常包含唯一值的列。但是,有时它没有数字。我有一个存储过程,当用户填写表单时触发,他们为该表单分配一个标识符(整数),然后存储过程执行---------------------------- Id | Name | Description | ---------------------------- 1 One The number one 2 Two The number two 3 Three The number three 更新/将信息插入维度。如果该数字已经在维度上,则更新该行,如果不是,则插入。但是,如果用户不包含标识符,我想为该行分配一个。

这样的事情怎么办?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以使用窗口功能。以下是update的代码:

with toupdate as (
      select t.*,
             max(col) over () as maxcol,
             row_number() over (partition by col order by col) as inc
      from t
     )
update toupdate
    set col = maxcol + inc
    where col is null;

这会对所有行进行更新。类似的想法可以用于merge