Sql server 如何从SQL视图创建表结构?

Sql server 如何从SQL视图创建表结构?,sql-server,Sql Server,我需要从sql视图创建一个表结构 我使用Azure SQL CREATE TABLE ProvidersByNameOrLocation AS ( SELECT STRING_AGG(CONCAT(C.name, ' ', Y.name, ' (', Y.max_length, ') ', IIF(C.is_nullable = 1, '', 'NOT '), 'NULL'), ', ') FROM SYS.all_columns C

我需要从sql视图创建一个表结构

我使用Azure SQL

CREATE TABLE ProvidersByNameOrLocation
    AS
    (
        SELECT STRING_AGG(CONCAT(C.name, ' ', Y.name, ' (', Y.max_length, ') ', IIF(C.is_nullable = 1, '', 'NOT '), 'NULL'), ', ')
        FROM SYS.all_columns C
        INNER JOIN SYS.all_objects T
        ON C.object_id = T.object_id
        INNER JOIN sys.types Y
        ON C.system_type_id = Y.system_type_id
        WHERE T.name = 'tableName'
    )

SQL Server不支持此Oracle语法。因此,您可能需要手动创建表,然后使用INSERT INTO。。。选择:


对azure不是很确定,但是从ProvidersByNameOrLocation中选择Top0*进入tablename通常会起作用
CREATE TABLE ProvidersByNameOrLocation (some_col varchar(200));
INSERT INTO ProvidersByNameOrLocation (some_col)
SELECT STRING_AGG(CONCAT(C.name, ' ', Y.name, ' (', Y.max_length, ') ', IIF(C.is_nullable = 1, '', 'NOT '), 'NULL'), ', ')
FROM SYS.all_columns C
INNER JOIN SYS.all_objects T
    ON C.object_id = T.object_id
INNER JOIN sys.types Y
    ON C.system_type_id = Y.system_type_id
WHERE T.name = 'tableName';