我正在寻找一种在应用程序将值插入SQL Server表时从first,last和MI列自动生成首字母的方法。我在考虑使用计算列,但我不确定这是否是这种情况下的最佳方法。该脚本必须查看现有的首字母列,并以某种方式使新值具有唯一性。也许通过在结尾处粘贴X(当X已经被使用时为XX,之后使用XXX等等),当值已经存在时。
非常感谢任何帮助。 TY
答案 0 :(得分:0)
您可以将默认约束添加到现有initial
列Default Left(FirstName,1) + Left(LastName,1)
以实现此目的。
答案 1 :(得分:0)
由于您尚未提供任何详细信息,因此您必须弄清楚如何通过以下方式进行分区和排序:....
select all_colmuns , case when max( (Left(FirstName,1) + Left (LastName,1))
over(PARTITION BY all_columns
ORDER BY id_primary_key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) =
(Left(FirstName,1) + Left(LastName,1)) then
(Left(FirstName,1) + Left(LastName,1)) + 'X'
else (Left(FirstName,1) + Left(LastName,1)) end as intials
from your_table
答案 2 :(得分:0)
select b.*, case when rn > 1 then intials_1 + replicate ('X' , rn-1)
else intials_1 end as intials_final
from
( select a.all_columns ,
row_number () over (partition by intials_1 order by intials_1) as rn
from
(select all_columns ,Left(FirstName,1) + Left(LastName,1) as intials_1
from your_tbl )a )b