Sql 从另一个表的行及其属性创建表
我有一个名为Sql 从另一个表的行及其属性创建表,sql,sql-server,Sql,Sql Server,我有一个名为Table1 Column Name Data type Max length Precision Scale is_nullable Primary Key Price float 8 53 0 1 0 Name varchar 180 0 0 1
Table1
Column Name Data type Max length Precision Scale is_nullable Primary Key
Price float 8 53 0 1 0
Name varchar 180 0 0 1 0
Id_no int 4 10 0 1 1
DOB date 3 10 0 1 0
(请注意,创建表查询还应考虑属性)您可以使用
选择进入
来创建表的副本:
select *
into NewTable
from OldTable
您可以动态创建SQL语句,然后运行该命令
DECLARE @dsql nvarchar(max) = N''
SELECT @dsql += QUOTENAME([Column Name]) + ' ' +
[Data type] +
+ CASE WHEN [Data type] = 'varchar'
THEN '(' + CAST([Max length] AS nvarchar(4)) + ')' ELSE '' END + ','
FROM Table1
SELECT @dsql = 'CREATE TABLE Table2 (' + LEFT(@dsql, LEN(@dsql) - 1) + ')'
EXEC sp_executesql @dsql
我相信OP希望能够创建一个表,其字段由OldTable的行定义。他想转置表格,而不是复制现有结构。@Andomar我不想创建副本。。我想创建一个新表,表1的行应该是表的列2@DanSullivan确切地但这并不是转置。。我只需要将我的[column Name]字段值添加到表2的列中。但我的其他列字段值(如数据类型Maxlength)应该是我的属性。要做到这一点,需要动态数据库特定的SQL。如果可能的话,我会在客户端完成。您想创建另一个表还是只选择数据透视?解决方案必须完全使用SQL吗?如果这是PHP/Python/Ruby/Anything脚本的后端,那么用该语言做您想要做的事情就相当简单了。@wk我想创建一个新表(表2)。。其中,表1的第1列行应为表2的第1列。。但是在表1的其他列中指定的数据类型中,@Dan Sullivan:对不起,它只在SQL中使用..您使用的是哪种DBMS?神谕PostgreSQL?即使这是标准SQL,SQL Server也不支持此语法。他们选择为此实现自己的语法。
create table table2
as
select * form table1;
DECLARE @dsql nvarchar(max) = N''
SELECT @dsql += QUOTENAME([Column Name]) + ' ' +
[Data type] +
+ CASE WHEN [Data type] = 'varchar'
THEN '(' + CAST([Max length] AS nvarchar(4)) + ')' ELSE '' END + ','
FROM Table1
SELECT @dsql = 'CREATE TABLE Table2 (' + LEFT(@dsql, LEN(@dsql) - 1) + ')'
EXEC sp_executesql @dsql