Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从另一个表列数据创建具有列名的表_Sql_Sql Server_Sql Server 2008_Sql Server 2005 - Fatal编程技术网

Sql 从另一个表列数据创建具有列名的表

Sql 从另一个表列数据创建具有列名的表,sql,sql-server,sql-server-2008,sql-server-2005,Sql,Sql Server,Sql Server 2008,Sql Server 2005,我有一个单列的表,如下所示: --------- | col | --------- | A | | B | | C | --------- ------------------- | A | B | C | ------------------- 我想创建一个具有以下列名的新表,如下所示: --------- | col | --------- | A | | B | | C | --------- ----------

我有一个单列的表,如下所示:

---------
|  col  |
---------
|   A   |
|   B   |
|   C   |
---------
-------------------
|  A  |  B  |  C  |
-------------------
我想创建一个具有以下列名的新表,如下所示:

---------
|  col  |
---------
|   A   |
|   B   |
|   C   |
---------
-------------------
|  A  |  B  |  C  |
-------------------

有什么建议吗?非常感谢。

一种方法是使用动态sql。 假设所有列的数据类型为int,可以执行以下操作:

---------
|  col  |
---------
|   A   |
|   B   |
|   C   |
---------
-------------------
|  A  |  B  |  C  |
-------------------
创建并填充样本表请在您将来的问题中保存此步骤:

DECLARE @T table
(
    col char(1)
)

INSERT INTO @T VALUES ('a'), ('b'), ('c')
构建动态sql:

DECLARE @Sql nvarchar(max) = 'CREATE TABLE YourNewTableName ('

SELECT @Sql = @Sql + col +' int,'
FROM @T 


SET @Sql = LEFT(@Sql, LEN(@Sql) - 1) +');'
--Print @sql
执行该命令之前,您可能需要打印该命令,以确保其正确性:

EXEC(@Sql)

一种方法是使用动态sql。 假设所有列的数据类型为int,可以执行以下操作:

---------
|  col  |
---------
|   A   |
|   B   |
|   C   |
---------
-------------------
|  A  |  B  |  C  |
-------------------
创建并填充样本表请在您将来的问题中保存此步骤:

DECLARE @T table
(
    col char(1)
)

INSERT INTO @T VALUES ('a'), ('b'), ('c')
构建动态sql:

DECLARE @Sql nvarchar(max) = 'CREATE TABLE YourNewTableName ('

SELECT @Sql = @Sql + col +' int,'
FROM @T 


SET @Sql = LEFT(@Sql, LEN(@Sql) - 1) +');'
--Print @sql
执行该命令之前,您可能需要打印该命令,以确保其正确性:

EXEC(@Sql)

你的问题不清楚。请按照正确的要求编辑它。实现这一点的一种方法是使用动态SQL;你应该使用pivot表,你使用哪种服务器端语言或者你想要纯sql?@CristianAbelleira你能帮我实现它吗?我不知道怎么办。你的问题不清楚。请按照正确的要求编辑它。实现这一点的一种方法是使用动态SQL;你应该使用pivot表,你使用哪种服务器端语言或者你想要纯sql?@CristianAbelleira你能帮我实现它吗?我不知道该怎么做。