Kronos SQL Query-ORA-00923:在预期位置未找到FROM关键字



所以我试图查询Kronos生产,遇到错误ORA-00923:";在预期的"处找不到FROM关键字;。我读过类似的文章,正如你在下面看到的,关键字FROM是语句中最后一个选择的项。

SELECT  A.NAME AS 'Accrual Profile',
A3.NAME AS 'Accrual Policy',
"Hidden Accrual Policy" = CASE 
WHEN A2.DISPLAYSW = 1 THEN 'Not Hidden'
ELSE 'Hidden' 
END,
A4.NAME AS 'Accrual Code',
A5.NAME AS 'Overflow Accrual Code',
D.NAME AS 'Length of Service Reference',
A3.GRANULARITYAMT AS 'Grant',
A3.FUTOVERDRFTERRAMT AS 'Future overdrafts - disallow amount',
A3.FUTOVERDRFTWARNAMT AS 'Future overdrafts - warn amount',
A3.IMPORTOVERRIDE_SW AS 'Override Warnings during Imports',
A3.GRPEDITOVERRIDE_SW AS 'Override Warnings during Group Edits',
A3.MAXTAKENAMOUNT,
A3.MINTAKENAMOUNT,
A3.USEFTEBALANCEADJSW,
A3.USESCHEDAMTTYPESW,
A3.USETODAYSBALNCE_SW,
P.NAME AS 'Probation',
P.TYPE AS 'Probation Type',
T.NAME AS 'Taking Limit',
D2.NAME AS 'Taking Limit Date Pattern',
G.NAME AS 'Grant/Limit Name',
"Limit or Grant Type" = CASE
WHEN G.GRANTTYPE = 'E' THEN 'Earned Grant'
WHEN G.GRANTTYPE = 'F' THEN 'Fixed Grant'
WHEN G.GRANTTYPE = 'B' THEN 'Earning Balance Limit'
WHEN G.GRANTTYPE = 'A' THEN 'Earning Amount Limit'
WHEN G.GRANTTYPE = 'C' THEN 'Carry Over Limit'
ELSE 'Other/Cap on Earnings?'
END,
D3.NAME AS 'Grant/Limit Date Pattern'
FROM ACCRUALPROFILE A
RIGHT OUTER JOIN ACCRUALPROFILEMM A2 ON A.ACCRUALPROFILEID = A2.ACCRUALPROFILEID
LEFT OUTER JOIN ACCRUALRULE A3 ON A2.ACCRUALRULEID = A3.ACCRUALRULEID
LEFT OUTER JOIN ACCRUALCODE A4 ON A3.ACCRUALCODEID = A4.ACCRUALCODEID
LEFT OUTER JOIN ACCRUALCODE A5 ON A3.OVRFLWACCRLCODEID = A5.ACCRUALCODEID
LEFT OUTER JOIN PROBATIONRULE P ON A3.PROBATIONRULEID = P.PROBATIONRULEID
LEFT OUTER JOIN DATESEQUENCE D ON A3.DATESEQUENCEID = D.DATESEQUENCEID
LEFT OUTER JOIN ACCRRLTAKELIMITMM A6 ON A3.ACCRUALRULEID = A6.ACCRUALRULEID
LEFT OUTER JOIN TAKINGLIMIT T ON A6.TAKINGLIMITID = T.TAKINGLIMITID
LEFT OUTER JOIN DATESEQUENCE D2 ON T.DATESEQUENCEID = D2.DATESEQUENCEID
LEFT OUTER JOIN ACCRRLGRANTRLMM A7 ON A3.ACCRUALRULEID = A7.ACCRUALRULEID
LEFT OUTER JOIN GRANTRULE G ON A7.GRANTRULEID = G.GRANTRULEID
LEFT OUTER JOIN DATESEQUENCE D3 ON G.DATESEQUENCEID = D3.DATESEQUENCEID

此外,我还尝试了另一种解决方案,即更改用双引号括起来的别名,看看这是否有效,但这会产生另一组错误。最后,我不认为我使用任何Oracle保留字作为别名。我希望有人能检查我的代码,看看我哪里错了。

因此,修复包括用双引号替换单引号,然后修复CaseStatement。


SELECT  A.NAME AS "Accrual Profile",
A3.NAME AS "Accrual Policy",
CASE 
WHEN A2.DISPLAYSW = 1 THEN 'Not Hidden'
ELSE 'Hidden' 
END,
A4.NAME AS "Accrual Code",
A5.NAME AS "Overflow Accrual Code",
D.NAME AS "Length of Service Reference",
A3.GRANULARITYAMT AS "Grant",
A3.FUTOVERDRFTERRAMT AS "Future overdrafts - disallow amount",
A3.FUTOVERDRFTWARNAMT AS "Future overdrafts - warn amount",
A3.IMPORTOVERRIDE_SW AS "Override Warnings during Imports",
A3.GRPEDITOVERRIDE_SW AS "Override Warnings during Group Edits",
A3.MAXTAKENAMOUNT,
A3.MINTAKENAMOUNT,
A3.USEFTEBALANCEADJSW,
A3.USESCHEDAMTTYPESW,
A3.USETODAYSBALNCE_SW,
P.NAME AS "Probation",
P.TYPE AS "Probation Type",
T.NAME AS "Taking Limit",
D2.NAME AS "Taking Limit Date Pattern",
G.NAME AS "Grant/Limit Name",
CASE
WHEN G.GRANTTYPE = 'E' THEN 'Earned Grant'
WHEN G.GRANTTYPE = 'F' THEN 'Fixed Grant'
WHEN G.GRANTTYPE = 'B' THEN 'Earning Balance Limit'
WHEN G.GRANTTYPE = 'A' THEN 'Earning Amount Limit'
WHEN G.GRANTTYPE = 'C' THEN 'Carry Over Limit'
ELSE 'Other/Cap on Earnings?'
END,
D3.NAME AS "Grant/Limit Date Pattern"
FROM ACCRUALPROFILE A
RIGHT OUTER JOIN ACCRUALPROFILEMM A2 ON A.ACCRUALPROFILEID = A2.ACCRUALPROFILEID
LEFT OUTER JOIN ACCRUALRULE A3 ON A2.ACCRUALRULEID = A3.ACCRUALRULEID
LEFT OUTER JOIN ACCRUALCODE A4 ON A3.ACCRUALCODEID = A4.ACCRUALCODEID
LEFT OUTER JOIN ACCRUALCODE A5 ON A3.OVRFLWACCRLCODEID = A5.ACCRUALCODEID
LEFT OUTER JOIN PROBATIONRULE P ON A3.PROBATIONRULEID = P.PROBATIONRULEID
LEFT OUTER JOIN DATESEQUENCE D ON A3.DATESEQUENCEID = D.DATESEQUENCEID
LEFT OUTER JOIN ACCRRLTAKELIMITMM A6 ON A3.ACCRUALRULEID = A6.ACCRUALRULEID
LEFT OUTER JOIN TAKINGLIMIT T ON A6.TAKINGLIMITID = T.TAKINGLIMITID
LEFT OUTER JOIN DATESEQUENCE D2 ON T.DATESEQUENCEID = D2.DATESEQUENCEID
LEFT OUTER JOIN ACCRRLGRANTRLMM A7 ON A3.ACCRUALRULEID = A7.ACCRUALRULEID
LEFT OUTER JOIN GRANTRULE G ON A7.GRANTRULEID = G.GRANTRULEID
LEFT OUTER JOIN DATESEQUENCE D3 ON G.DATESEQUENCEID = D3.DATESEQUENCEID

最新更新