在 SQL 中使用 CTE 创建 table

Create table with CTEs in SQL

我有一个 CTE,我正在尝试从中创建一个 table,但不确定我做错了什么?我一直收到错误 "Incorrect syntax near ';'."

create table ATB AS

;WITH 


rpt_dts as (

select 
        CONVERT(varchar(12),GETDATE() -30, 101) productivity_srt_date 
       ,CONVERT(varchar(12),GETDATE(), 101) productivity_end_date
       ,CONVERT(varchar(12),'1/1/2017', 101) DenialStrt_date  
       ,CONVERT(varchar(12),GETDATE(), 101) ME_end_date   


) select * from rpt_dts

SQL 服务器不支持 CTA:

;WITH rpt_dts as (
  select 
        CONVERT(varchar(12),GETDATE() -30, 101) productivity_srt_date 
       ,CONVERT(varchar(12),GETDATE(), 101) productivity_end_date
       ,CONVERT(varchar(12),'1/1/2017', 101) DenialStrt_date  
       ,CONVERT(varchar(12),GETDATE(), 101) ME_end_date   
) 
select * 
into ATB        -- into clause is a workaround
from rpt_dts

SQL Fiddle

MS SQL Server 2017 架构设置:

CREATE TABLE #ATB (
productivity_srt_date VARCHAR(250)
,productivity_end_date VARCHAR(250)
, DenialStrt_date VARCHAR(250)
, ME_end_date VARCHAR(250)
);

查询 1:

WITH rpt_dts as (

select 
        CONVERT(varchar(12),GETDATE() -30, 101) productivity_srt_date 
       ,CONVERT(varchar(12),GETDATE(), 101) productivity_end_date
       ,CONVERT(varchar(12),'1/1/2017', 101) DenialStrt_date  
       ,CONVERT(varchar(12),GETDATE(), 101) ME_end_date   
)

select * 
into #ATB       
from rpt_dts

Results: