sql - 如何使重复值唯一?

标签 sql sql-server-2012 ssms

我的列中有包含重复值的记录。

例如:

INVOICENUM  PRODUCT
-------------------
  789789    ABROPT
  789789    ABROPT
  719648    AZGTEL
  754114    GRTYPT

我有 2 条记录,其中发票编号重复,对于第一个编号,我要添加“a”,第二个编号要添加“b”,依此类推。

INVOICENUM  PRODUCT
-------------------
 789789a    ABROPT
 789789b    ABROPT
 719648     AZGTEL
 754114     GRTYPT

如何使用 SQL 修复此问题 - 我使用的是 SQL Server 2012 和 Microsoft SQL Server Management Studio 11.0.3000.0?

最佳答案

通常此类问题可以通过分析函数来解决。

select case
         when (count(1) over(partition by InvoiceNum) > 1) then
           InvoiceNum + Char(row_Number() over(partition by InvoiceNum order by InvoiceNum) + 96)
         else
           InvoiceNum
       end as InvoiceNum,
       Product    
  from MyTable

分析函数的主要优势性能

关于sql - 如何使重复值唯一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22063313/

相关文章:

mysql - 如何将SQL/MySQL查询输出划分到多个表中?

sql - 为什么 [table].[column] != null 不起作用?

sql-server-2012 - 在 SQL Server 中添加仅大写字母约束

sql-server - 使用门户将图像上传到 Azure 存储(非编程方式)

sql-server-2008 - Sql Server 'Saving changes is not permitted' 错误 ► 阻止保存需要重新创建表的更改

sql-server - 为什么 Intellisense 在 SQL Server Management Studio 2008 R2 中不起作用?

c++ - 将 SQL 数据库移动到 ram

mysql - SQL - 如果 ID 之一具有特定列值,则选择所有匹配的 ID

mysql - 条件窗函数

sql - LIKE '%...'如何寻找索引?