T-SQL - 根据 ID 标记一列中的公共值并更新数据库

T-SQL - Flagging Common Values in One Column Based on ID and updating the database

问题陈述: 有两列,VariableName 和 ID。我想用双字符字母代码映射同一列中的变量,例如 'aa'、'ab'、'ac'、'ad'... 最多 'zz' 在 T-SQL.

说明,

输入数据:

VariableName      ID      MapFlag        isMapped
var_1             1         NULL           FALSE
var_2             1         NULL           FALSE
var_3             1         NULL           FALSE
var_4             1         NULL           FALSE
var_5             1         NULL           FALSE
var_1             2         NULL           FALSE
var_2             2         NULL           FALSE
var_3             2         NULL           FALSE
var_10            2         NULL           FALSE
var_11            2         NULL           FALSE
var_1             3         NULL           FALSE
var_10            3         NULL           FALSE
var_3             3         NULL           FALSE
var_7             3         NULL           FALSE
var_1             4         NULL           FALSE
var_2             4         NULL           FALSE
var_4             4         NULL           FALSE

期望输出

VariableName      ID      MapFlag        isMapped
var_1             1          aa           TRUE
var_2             1          ab           TRUE
var_3             1          ac           TRUE
var_4             1          ad           TRUE
var_5             1          NULL         FALSE
var_1             2          aa           TRUE
var_2             2          ab           TRUE
var_3             2          ac           TRUE
var_10            2          ae           TRUE
var_11            2          NULL         FALSE
var_1             3          aa           TRUE
var_10            3          ae           TRUE 
var_3             3          ac           TRUE
var_7             3          NULL         FALSE
var_1             4          aa           TRUE
var_2             4          ab           TRUE 
var_4             4          ad           TRUE

如你所见,

总结一下:本质上,我想用上面的模式创建一个映射标志 'aa'、'ab'、'ac' 在不同的ID之间。如果 mapFlag 不为 NULL,则 isMapped 为 TRUE,否则为 FALSE

最后,我想编写一个“更新”存储过程,用输入数据转换输入“MapFlag”列,然后用输出数据更新table

这是获取 var 标记的查询。

select VariableName,  char(ASCII('a')+rn/(ASCII('z') - ASCII('a') +1)) + char(ASCII('a') -1 + rn%(ASCII('z') - ASCII('a') +1)) y
from (
    select  VariableName, row_number() over (order by VariableName) rn
    from mytable
    group by VariableName
    having count(distinct id) > 1
) t