如何在SQL Server中使用select查询创建表?

lok*_*oki 34 sql sql-server sql-server-2008

我尝试使用SYS查询生成50-100个表

SELECT windows_release, windows_service_pack_level, 
       windows_sku, os_language_version
FROM sys.dm_os_windows_info OPTION (RECOMPILE);     -- DE????RSE INSERT ETSIN AYNI ISE DE???MES?N

-- Gives you major OS version, Service Pack, Edition, and language info for the operating system

-- SQL Server Services information (SQL Server 2008 R2 SP1 or greater)
SELECT servicename, startup_type_desc, status_desc, 
last_startup_time, service_account, is_clustered, cluster_nodename
FROM sys.dm_server_services OPTION (RECOMPILE);


-- Hardware information from SQL Server 2008 
-- (Cannot distinguish between HT and multi-core)
SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS [Hyperthread Ratio],
cpu_count/hyperthread_ratio AS [Physical CPU Count], 
physical_memory_in_bytes/1048576 AS [Physical Memory (MB)], 
sqlserver_start_time --, affinity_type_desc -- (affinity_type_desc is only in 2008 R2)
FROM sys.dm_os_sys_info OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud)

如何从SYS表查询结果创建表?

Dav*_*ant 67

select <column list> into <table name> from <source> where <whereclause>
Run Code Online (Sandbox Code Playgroud)


mr_*_*air 14

select <column list> into <dest. table> from <source table>;
Run Code Online (Sandbox Code Playgroud)

你可以这样做.

SELECT windows_release, windows_service_pack_level, 
       windows_sku, os_language_version
into   new_table_name
FROM   sys.dm_os_windows_info OPTION (RECOMPILE);
Run Code Online (Sandbox Code Playgroud)


All*_*n F 10

使用子选择的示例语句:

select * into MyNewTable
from
(
select 
  * 
from 
[SomeOtherTablename]
where 
  EventStartDatetime >= '01/JAN/2018' 
)
) mysourcedata
;
Run Code Online (Sandbox Code Playgroud)

请注意,子查询必须指定一个名称.. 任何名称.. 例如,上面的示例为子查询命名为 mysourcedata。如果没有这个,SQL*server 2012 中会出现语法错误。

数据库应回复如下消息:(9999 行受影响)

  • 这个接受的答案示例显示,为子选择提供别名的要求比下面的答案更有用,下面的答案没有给出需要别名的指示,并且会让人们想知道为什么他们会收到有关不正确的错误消息句法?我仍然会投票支持这个已接受的答案,因为它是一些人可以立即使用的东西。 (2认同)