在 SQL SELECT 案例语句查询中增加计数器

Increment a Counter within a SQL SELECT Case Statement Query

我有一些示例数据,结果如下:

**Name**
NULL
Bob
Steven
Jane

Susan

应该发生的是查询应该将 NULL 和空字符串转换为 Anom[Counter] 的值,所以它最终会像这样:

**Name**
Anom1
Bob
Steven
Jane
Anom2
Susan

我的基本查询如下,但我怎样才能自动增加数字?

select
    CASE WHEN Name is NULL or Name = '' THEN 'Anom1' Else Name END
from 
    Names

示例数据

Create Table Names
(
    Name varchar(50) NULL
)
insert into Names
(
    Name
)
select
    NULL
union all
select
    'Bob'
union all
select
    'Steven'
union all
select
    'Jane'
union all
select 
    ''
union all
select
    'Susan'

使用 row_number() 生成 运行 数字并使用 concat 将其与字符串 Anom

连接起来
SELECT CASE WHEN [Name] IS NULL 
              OR [Name] = '' 
            THEN CONCAT('Anom', ROW_NUMBER() OVER (PARTITION BY NULLIF([Name], '')
                                                       ORDER BY [Name]))
            ELSE [Name]
            END
FROM   [Names]

您可以通过 row_number 实现此目的

select IsNull(NullIf(Name,''),Concat('Anon', Row_Number() over(partition by IsNull(NullIf(Name,''),'Anon') order by Name) ) ) Names
from names
order by [name]