在 SQL 中使用 UNION ALL
Using UNION ALL in SQL
我添加了两个 UNION ALL 语句来获取完整的数据,因为它位于具有相同列名和数据类型的三个不同表中。我收到 ORA-00907: 缺少右括号错误,我已经研究过但仍然无法弄清楚。
SELECT
PE.STUDENTID,
SDA.ATT_DATE,
SCH.NAME,
PE.GRADE_LEVEL,
SR.DESCRIPTION,
S.GENDER,
SDA.ATT_CODE
FROM
PS.PS_ENROLLMENT PE
JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER
JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
))) SDA ON PE.STUDENTID = SDA.STUDENTID
WHERE
PE.ENTRYDATE BETWEEN TO_DATE( '08/1/2011', 'mm/dd/yyyy' )
AND TO_DATE( '07/31/2012', 'mm/dd/yyyy' )
AND PE.EXITDATE > PE.ENTRYDATE
AND SDA.ATT_CODE IN ( 'A', 'I', 'E', 'U', 'M', 'K' )
AND SDA.PRESENCE_STATUS_CD = 'Absent'
AND PE.SCHOOLID BETWEEN ### AND ### AND PE.SCHOOLID NOT IN ( ###, ### )
AND PE.GRADE_LEVEL BETWEEN 0 AND 6
ORDER BY
SDA.ATT_DATE
您缺少 JOIN 子句
FROM
PS.PS_ENROLLMENT PE
JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER
JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
JOIN -- missing
((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
))) SDA ON PE.STUDENTID = SDA.STUDENTID
我添加了两个 UNION ALL 语句来获取完整的数据,因为它位于具有相同列名和数据类型的三个不同表中。我收到 ORA-00907: 缺少右括号错误,我已经研究过但仍然无法弄清楚。
SELECT
PE.STUDENTID,
SDA.ATT_DATE,
SCH.NAME,
PE.GRADE_LEVEL,
SR.DESCRIPTION,
S.GENDER,
SDA.ATT_CODE
FROM
PS.PS_ENROLLMENT PE
JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER
JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
))) SDA ON PE.STUDENTID = SDA.STUDENTID
WHERE
PE.ENTRYDATE BETWEEN TO_DATE( '08/1/2011', 'mm/dd/yyyy' )
AND TO_DATE( '07/31/2012', 'mm/dd/yyyy' )
AND PE.EXITDATE > PE.ENTRYDATE
AND SDA.ATT_CODE IN ( 'A', 'I', 'E', 'U', 'M', 'K' )
AND SDA.PRESENCE_STATUS_CD = 'Absent'
AND PE.SCHOOLID BETWEEN ### AND ### AND PE.SCHOOLID NOT IN ( ###, ### )
AND PE.GRADE_LEVEL BETWEEN 0 AND 6
ORDER BY
SDA.ATT_DATE
您缺少 JOIN 子句
FROM
PS.PS_ENROLLMENT PE
JOIN PS.STUDENTS S ON PE.STUDENTID = S.ID
JOIN PS.SCHOOLS SCH ON PE.SCHOOLID = SCH.SCHOOL_NUMBER
JOIN PS.PSRW_STUDENT_RACE SR ON PE.STUDENTID = SR.STUDENTID
JOIN -- missing
((SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_MEETING))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_INTERVAL))
UNION ALL
(SELECT STUDENTID, SCHOOLID, ATT_CODE, ATT_DATE FROM (PS.PS_ATTENDANCE_DAILY
))) SDA ON PE.STUDENTID = SDA.STUDENTID