我认为你需要研究的是连接表中各行存储的文本的模式。本资源列出了您应该阅读的一些常见模式:https://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
也就是说,XML路径模式是我最常使用的模式。
CREATE TABLE Tblstructure (Colname varchar(50));
INSERT INTO Tblstructure (Colname)
VALUES ('Region'), ('Country'), ('State'), ('Metric'), ('Value');
DECLARE @ColumnDeclaration VARCHAR(2000) =
STUFF(
(SELECT ', ' + Colname + ' VARCHAR(50) '
FROM Tblstructure
FOR XML PATH(''), type).value('.', 'varchar(max)')
, 1, 1, '')
SELECT 'CREATE TABLE SomeTempTable (' + @ColumnDeclaration + ');'
输出:CREATE TABLE SomeTempTable (Region VARCHAR(50) , Country VARCHAR(50) , State VARCHAR(50) , Metric VARCHAR(50) , Value VARCHAR(50));
请注意,我不得不做出应该代表每个字段类型的假设。我假定每个字段都是VARCHAR(50)
,但是您可能想要找出推断每个字段应该是什么类型的更好方法。
工作例如:http://sqlfiddle.com/#!6/d4434/23
编辑
另外,请记住,这将不会是实际创建表,它只是给你动态CREATE TABLE语句。要执行此操作,您需要将生成的create table语句提供给sp_executesql。
来源
2015-08-15 07:25:23
Joe
感谢您的回复。让我试试这个 – Mohit