设置重复 ID 直到第一个记录重复(批量加载 csv 文件)

Set repeating IDs till first record repeats (bulk load csv file)

我有一个通过批量插入导入的文件,我想分配组 IDs/sequences。 我想分配 ID,直到 具有第一个字符的第一条记录被重复 。在这个例子中它是“A”。

我面临的挑战是如何实现这个例子并像这个例子一样设置ID:

ID data
1 A000abcefd
1 E00asoaskdaok
1 C000dasdasok
2 A100abcasds
2 E100aandas
2 C100adsokdas

这是一种方法,但鉴于您提供的信息有限,我将做出以下假设:

**您 table 中的数据有一定的顺序。如果不是这种情况,这显然是行不通的。我用了ID,你用你有的

**table 中的第一行有您要查找的字符。

CREATE TABLE #tmp(ID int,   [data] varchar(20))
INSERT INTO #tmp
VALUES
(1, 'A000abcefd'),
(2, 'E00asoaskdaok'),
(3, 'C000dasdasok'),
(4, 'A100abcasds'),
(5, 'E100aandas'),
(6, 'C100adsokdas')


DECLARE @CHAR varchar(1)

SELECT @CHAR = (SELECT TOP 1 SUBSTRING([data],1,1) FROM #tmp ORDER BY ID)

SELECT SUM(CASE WHEN SUBSTRING([data],1,1) = @CHAR THEN 1 ELSE 0 END) 
                    OVER(ORDER BY ID ROWS BETWEEN UNBOUNDED PRECEDING and CURRENT ROW) SeqNum
,[data]
FROM #tmp