如何添加标识号,以便在插入行时通过触发器分配增量号码如下所示:我正在使用SQL Server。SQL Server:标识按组列出
1 AAA
2 AAA
3 BBB
4 CCC
5 CCC
6 CCC
7 DDD
8 DDD
9 EEE
....
我想将其转换为:
1 AAA 1
2 AAA 2
4 CCC 1
5 CCC 2
6 CCC 3
7 DDD 1
8 DDD 2
如何添加标识号,以便在插入行时通过触发器分配增量号码如下所示:我正在使用SQL Server。SQL Server:标识按组列出
1 AAA
2 AAA
3 BBB
4 CCC
5 CCC
6 CCC
7 DDD
8 DDD
9 EEE
....
我想将其转换为:
1 AAA 1
2 AAA 2
4 CCC 1
5 CCC 2
6 CCC 3
7 DDD 1
8 DDD 2
您可以创建一个FUNCTION
其得名,并给出MAX
身份给定参数:
CREATE FUNCTION [dbo].[GetIdentityForName] (@Name VARCHAR(MAX))
RETURNS INT
AS
BEGIN
RETURN
(SELECT ISNULL(MAX(NameId),0)+1
FROM YourTable
WHERE Name = @Name);
END
,然后设置DefaultValue
对于NameId
用于调用插入记录时的功能,如下所示:
ALTER TABLE YourTable ADD CONSTRAINT
DF_Identity_NameId DEFAULT ([dbo].[GetIdentityForName](Name)) FOR NameId
假设YourTable
是(Id
,Name
,NameId
)。
我希望你:)
没有理由为什么你要存储的值是有帮助的。你可以在需要时计算它:
select t.*, row_number() over (partition by name order by id) as nameId
from t;
你在使用什么数据库? – Dalorzo
MS SQL数据库 – Mansoor
你是否也想过滤出id为3和9的行? – cars10m