我有一个通过大容量插入导入的文件,我想分配组ID/序列。我想分配ID,直到重复第一个字符的第一条记录。在这个例子中;A";。
我面临的挑战是如何实现这个例子,并像这个例子一样设置ID:
ID | 数据 |
---|---|
1 | A000abcefd> |
1 | E00asoskdaok |
1 | C000dasdasok |
2 | A100abcasds |
2 | E100aandas |
2 | C100dsokdas |
这里有一种方法,但鉴于您提供的信息有限,我将做出以下假设:
**表中的数据有一定的顺序。如果不是这样,这显然是行不通的。我用的是身份证,你用的是你所拥有的。
**表中的第一行具有您要查找的字符。
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