SQL Server:如何使用递增的数据生成引用列?

SQL Server:如何使用递增的数据生成引用列?,sql,sql-server,Sql,Sql Server,我有两张桌子 t1和t2 t1有一个ID和一个引用。该引用的格式为-0000000,不能超过7个字符 t2有1500条记录。如何插入计数递增的数据 T2不包含引用字段。T2包含一个具有1500条记录的ID。我想导入该ID,甚至只是将计数循环到1500,然后生成一个引用 比如说 ID Reference 1 TO-0000001 .. ...... 1500 TO-0001500 希望这是有道理的 将表t1的ID列设为IDENTITY,增量将自动处理。 现在您只需要从源表t

我有两张桌子

t1和t2

t1有一个ID和一个引用。该引用的格式为-0000000,不能超过7个字符

t2有1500条记录。如何插入计数递增的数据

T2不包含引用字段。T2包含一个具有1500条记录的ID。我想导入该ID,甚至只是将计数循环到1500,然后生成一个引用

比如说

ID    Reference
1     TO-0000001
..    ......
1500  TO-0001500

希望这是有道理的

将表t1的ID列设为
IDENTITY
,增量将自动处理。 现在您只需要从源表t2中提取引用值并插入到目标表t1中

INSERT INTO t1(References)
SELECT References FROM t2

我假设您希望将
ID
列导入T1,并在插入该数据时生成一个引用字段。如果是这种情况,请尝试以下方法:

INSERT INTO T1 (ID,Reference)
SELECT ID,'TO-'+Left('0000000',(7-LEN(ID)))+CAST(ID AS CHAR)
FROM T2
尝试在SSMS中执行此操作,以便于理解

DECLARE @num int=1
DECLARE @Results TABLE
(
ID INT,
Reference Char(10)
)
WHILE @num <= 1500
BEGIN
Insert INTO @Results
Select @num, 'TO-'+Left('0000000',(7-LEN(@num)))+CAST(@num AS CHAR)
SET @num = @num+1
END
SELECT * FROM @Results
声明@num int=1
声明@Results表
(
ID INT,
参考字符(10)
)
而@num
声明@T表(标记INT-IDENTITY(1,1),名称VARCHAR(20));
声明@N INT,@name VARCHAR(20)
设置@N=1
而(@N<1500)
开始
插入@T(名称)
值('TO'+右('00000'+转换(VARCHAR,@N),12));
设置@N=@N+1;
结束
从@T中选择*

对不起,我想我不清楚。T2不包含引用字段。T2包含一个具有1500条记录的ID。我想导入该ID,甚至只是将计数循环到1500并生成一个引用。通常情况下,您应该将数据存储在数据库中的自然表示形式中,而不考虑格式问题。如果你想要一致性,你可以考虑添加一个计算格式的计算列,但是我仍然将数据存储为1, 2, 3,等等。在正常情况下,我倾向于同意,但是有一个现有的模式和系统,这迫使我以类似的方式重写脚本。Raj,这是完美的。写得好,容易理解。谢谢
DECLARE @T TABLE (Flag INT IDENTITY(1,1),Name VARCHAR(20));
DECLARE @N INT,@name VARCHAR(20)
SET @N = 1
WHILE (@N < 1500)
BEGIN
INSERT INTO @T(Name)
VALUES( 'TO' + RIGHT('00000'+ CONVERT(VARCHAR,@N),12));
SET @N = @N + 1;

END
select * from @T