You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server使用WITH子句创建临时表报错:')'附近语法错误

问题分析与解决方案

错误原因

你只定义了CTE(WITH子句),但没有编写后续使用这个CTE的执行语句。SQL Server要求CTE必须被紧接着的SELECT、INSERT等语句调用,单独定义CTE会触发"文件末尾附近语法错误"。

正确实现方法

方法1:直接创建新表并导入所有数据(推荐)

使用SELECT INTO语句,它会自动创建与源文件结构一致的目标表,并一次性插入所有合并后的数据:

SELECT *
INTO YearlyData
FROM ['202109-divvy-tripdata-Sept2021$']
UNION ALL
SELECT * FROM ['202110-divvy-tripdata-Oct2021$']
UNION ALL
SELECT * FROM ['202111-divvy-tripdata-Nov2021$']
UNION ALL
SELECT * FROM ['202112-divvy-tripdata-Dec2021$']
UNION ALL 
SELECT * FROM ['202201-divvy-tripdata-Jan2022$']
UNION ALL
SELECT * FROM ['202202-divvy-tripdata-Feb2022$']
UNION ALL 
SELECT * FROM ['202203-divvy-tripdata-Mar2022$']
UNION ALL 
SELECT * FROM ['202204-divvy-tripdata-Apr2022$']
UNION ALL 
SELECT * FROM ['202205-divvy-tripdata-May2022$']
UNION ALL
SELECT * FROM ['202206-divvy-tripdata-June2022$']
UNION ALL 
SELECT * FROM ['202207-divvy-tripdata-July2022$']
UNION ALL 
SELECT * FROM ['202208-divvy-tripdata-Aug2022$']

方法2:先创建表再插入数据

如果你已经手动定义了目标表YearlyData的结构(列名、数据类型等),可以用INSERT INTO语句批量插入:

INSERT INTO YearlyData
SELECT * FROM ['202109-divvy-tripdata-Sept2021$']
UNION ALL
SELECT * FROM ['202110-divvy-tripdata-Oct2021$']
UNION ALL
-- 依次添加剩下的10个SELECT语句

注意事项

  • 确保所有CSV文件的列数、列顺序、数据类型完全一致,否则UNION ALL会执行失败。
  • 你当前使用的['文件名$']格式通常用于连接Excel文件,如果是纯CSV文件,可能需要用OPENROWSET(BULK...)语法读取,示例:
SELECT *
FROM OPENROWSET(
    BULK 'D:\Data\202109-divvy-tripdata-Sept2021.csv',
    FORMAT = 'CSV',
    FIRSTROW = 2 -- 跳过表头行
) AS ImportedData

内容的提问来源于stack exchange,提问作者Mehek Salim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 15:31:01