[英]Kronos SQL Query-ORA-00923: FROM keyword not found where expected
So I'm trying to query Kronos production and I'm coming against the error ORA-00923: "FROM keyword not found where expected ".所以我正在尝试查询 Kronos 生产,但我遇到了错误 ORA-00923:“FROM keyword not found where expected”。 I've read similar posts and as you can see below, the keyword FROM is the last selected item in the statement.
我读过类似的帖子,正如您在下面看到的,关键字 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
Moreover, I tried another solution by changing the enclosed alias in double quotation marks to see if that would work but that produced another set of errors.此外,我尝试了另一种解决方案,通过更改双引号中的别名来查看是否可行,但会产生另一组错误。 Lastly, I don't think I'm using any Oracle reserved words as an alias.
最后,我认为我没有使用任何 Oracle 保留字作为别名。 I was hoping someone could check my code to see where I have got it wrong.
我希望有人可以检查我的代码,看看我在哪里做错了。
So the fix involved replacing single quotes with double quotes and then fixing the CaseStatement.因此,修复涉及用双引号替换单引号,然后修复 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.