我有一个表A
(Acons,A1,A2,A3),我应在其中插入另一个表B
中包含列(B1,B2,B3)的信息。 Acons是一个列,其中应包含一些连续的数字(它不是一个身份,我不能使它成为身份)。我知道xmin - 从序号开始必须计算序列。如何使用单个Insert语句将行插入表A?
我尝试了以下内容,但它不起作用:
DECLARE @i AS INT;
SET @i = xmin;
INSERT INTO A(Acons, A1, A2, A3)
SELECT @i = (Bcons = (@i + 1)), B1, B2, B3
FROM B
不幸的是,上述解决方案不起作用;
答案 0 :(得分:3)
您已经有一组行来生成数字以添加到Bcons。它在SQL Server 2000中比较棘手,但有人希望你使用的是SQL Server 2005 +
WITh cNumbers AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY Bcons) AS Number,
Bcons, B1, B2, B3
FROM
B
)
INSERT INTO A (Acons, A1, A2, A3)
SELECT
Bcons + Number /* need -1 here? */, B1, B2, B3
FROM
cNumbers
正如Philip Kelley所说,我们不需要CTE。卫生署。
SELECT
Bcons + ROW_NUMBER() OVER (ORDER BY Bcons) /* need -1 here? */, B1, B2, B3
FROM
B
答案 1 :(得分:0)
我不知道xmin来自哪里,但试试吧。
DECLARE @i AS INT;
SET @i = xmin;
Insert into A
Select @i+1,b1,b2,b3 from B
答案 2 :(得分:0)
这是另一种方法:
DECLARE @i AS INT;
SET @i = xmin;
insert into a
select ((ROW_NUMBER() OVER (ORDER BY b1))+@i) AS Number,b1,b2,b3 from b
- 重新编辑