玉以及假设的SQL Server(与ROWNUMBER功能),那么这似乎工作
select
INVOICENUM = case
when INVOICENUM in (select INVOICENUM from YourTable group by INVOICENUM having COUNT(*) > 1)
then INVOICENUM + char(96+row_number() over (partition by INVOICENUM order by INVOICENUM))
else INVOICENUM
end,
PRODUCT,
OtherColumn,
AnotherColumn
from
YourTable
虽然它不是特别优雅...
这里的想法是让行号种子的int到字符功能CHAR(...)
。其中96是a之前的字符的ASCII码,所以1的给出的数字给出a(即,ASCII码97),行号2给出b(即,ASCII码为98)等等。 。 我已经抛出的case语句在那里排除的情况时有没有重复,因此它只是给后面的InvoiceNum不添加信...
继承人我的测试例子...
declare @data table (INVOICENUM nvarchar(100), PRODUCT nvarchar(100))
insert into @data
values ('789789', 'ABROPT')
,('789789', 'ABROPT')
,('719648', 'AZGTEL')
,('754114', 'GRTYPT')
select
INVOICENUM = case
when INVOICENUM in (select INVOICENUM from @data group by INVOICENUM having COUNT(*) > 1)
then INVOICENUM + char(96+row_number() over (partition by INVOICENUM order by INVOICENUM))
else INVOICENUM
end,
PRODUCT
from
@data
您是否尝试过任何查询? – Fabio
是否有第三个重复的可能性? – Kuzgun
什么版本的sql? –