设置重复 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
我有一个通过批量插入导入的文件,我想分配组 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