在 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]
我有一些示例数据,结果如下:
**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]