玉以及假設的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? –