[英]T-SQL Insert Column Name as First Row
我有下表(Table_1):
Seq | Name | Column1 | Column2
还有另一个具有以下结构的表(Table_2):
Name | Column1Table2 | Column2Table2
我需要将每个列的名称插入第一个表。 因此,结果应该是(Seq是从1开始的行号):
+-----+------+---------------+---------------+
| Seq | Name | Column1 | Column2 |
+-----+------+---------------+---------------+
| 1 | Name | Column1Table2 | Column2Table2 |
+-----+------+---------------+---------------+
假设第一个表中的Seq
是一个自动增量列,那么您应该能够在插入过程中将其忽略,例如
INSERT INTO Table_1 (Name, Column1, Column2)
SELECT Name, Column1Table2, Column2Table2
FROM Table_2;
Seq将是从1开始的行号
那是你想做什么?
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) RN,
Name,
Column1Table2,
Column2Table2
FROM Table2
)
INSERT INTO Table1(Seq, Name, Column1, Column2)
SELECT RN,
Name,
Column1Table2,
Column2Table2
FROM CTE;
演示:
CREATE TABLE Table1(
Seq INT,
Name VARCHAR(45),
Column1 VARCHAR(45),
Column2 VARCHAR(45)
);
CREATE TABLE Table2(
Name VARCHAR(45),
Column1Table2 VARCHAR(45),
Column2Table2 VARCHAR(45)
);
INSERT INTO Table2 VALUES
('Name1', 'Col1Value1', 'Col2Value1'),
('Name2', 'Col1Value2', 'Col2Value2');
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) RN,
Name,
Column1Table2,
Column2Table2
FROM Table2
)
INSERT INTO Table1(Seq, Name, Column1, Column2)
SELECT RN,
Name,
Column1Table2,
Column2Table2
FROM CTE;
SELECT *
FROM Table1;
返回:
+-----+-------+------------+------------+
| Seq | Name | Column1 | Column2 |
+-----+-------+------------+------------+
| 1 | Name1 | Col1Value1 | Col2Value1 |
| 2 | Name2 | Col1Value2 | Col2Value2 |
+-----+-------+------------+------------+
更新:
我需要将每列的名称插入第一个表
我不认为您要尝试在另一个表中插入一个表的列名 ,但是如果是这样,那么为什么要这样做呢? 您到底想做什么? 为什么不只是
INSERT INTO Table1 (Seq, Name, Column1, Column2) VALUES
(1, 'Name', 'Table2Column1', 'Table2Column2');
--You can remove <Name> column and <1> value if it's an identity column
谢谢大家。 我最终使用了Stuff函数来连接来自模式表的列名,然后将值旋转到列中并将它们插入到Temp表中。 最后将Temp表的值插入到主表中。 这篇文章非常有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.