2015-11-04 48 views
0

我很努力与MS Access 2010 SQL。任何人都可以看到为什么下面的SQL语句会在FROM子句中产生“语法错误?”SQL联盟所有“语法Eror in从句子”

INSERT INTO Attendance 
SELECT [AttendanceData].Student, [AttendanceData].[10/1/2015] AS AttendValue, 
"10/1/15" AS AttendDate 
FROM [AttendanceData] 
UNION ALL 
SELECT [AttendanceData].Student, [AttendanceData].[10/2/2015] AS AttendValue, 
"10/2/15" As AttendDate 
FROM [AttendanceData]; 

个人陈述做工精细,但与UNION ALL结合,我收到

语法错误在FROM子句“。

任何帮助,将不胜感激!

谢谢

+0

什么是'Attendance'表中的列? –

+0

请参阅['FROM'与巨大的UNION子句有关的语法错误](http://stackoverflow.com/questions/17284174/from-syntax-error-involved-with-huge-union-clause) – Marusyk

+0

并且使用适当的字符串表达式为您的日期值:'#2015/10/2#作为AttendDate' – Gustav

回答

1

尝试使用某些东西这样的:

INSERT INTO Attendance 
SELECT R.Student, R.AttendValue, R.AttendDate 
FROM 
(
    (SELECT [AttendanceData].Student, [AttendanceData].[10/1/2015] AS AttendValue, 
    "10/1/15" AS AttendDate 
    FROM [AttendanceData]) 

    UNION ALL 

(SELECT [AttendanceData].Student, [AttendanceData].[10/2/2015] AS AttendValue, 
    "10/2/15" As AttendDate 
    FROM [AttendanceData]) 
) AS R 
0

在MS Access的Jet/ACE SQL,你不能在追加查询使用联合查询直接。您将看到查询调试器突出显示UNION ALL语句。

将联合查询单独保存为存储的查询对象,然后将其用于追加查询的SELECT语句中。

INSERT INTO Attendance 
SELECT * FROM UnionAttendance 

或者,你可以使用派生表:

INSERT INTO Attendance 
SELECT * 
FROM ( 
    SELECT [AttendanceData].Student, [AttendanceData].[10/1/2015] AS AttendValue, 
    "10/1/15" AS AttendDate 
    FROM [AttendanceData] 
    UNION ALL 
    SELECT [AttendanceData].Student, [AttendanceData].[10/2/2015] AS AttendValue, 
    "10/2/15" As AttendDate 
    FROM [AttendanceData] 
);