交互式报告查询失败,突出显示行 css 条件
Query for interactive report failing with highlight row css conditions
我正在使用下面的查询根据列值突出显示状态列。
它在 else 块中因错误而失败:
ORA-20999: 解析 SQL 查询失败!
ORA-06550:第 12 行,第 15 列:ORA-00923:在预期位置找不到 FROM 关键字
哪里出错了??
似乎 CASE
(选择状态)会导致问题,因为
- 以逗号结尾,后面没有任何内容
- 您将整个 CASE 结构命名为
"PT_IT_ISSUES"."STATUS"
,这是一个列名;你应该使用 alias,例如只是 status
像这样:
SELECT "P_IT_ISSUES"."ISSUE_SUMMARY" AS "ISSUE_SUMMARY",
"P_IT_PEOPLE"."PERSON_NAME" AS "IDENTIFIED_BY",
"P_IT_ISSUES"."IDENTIFIED_DATE" AS "IDENTIFIED_DATE",
"P_IT_DEPARTMENTS"."DEPT_NAME" AS "DEPT_NAME",
DECODE ("P_IT_PEOPLE_1"."PERSON_NAME",
NULL, 'Unassigned',
"P_IT_PEOPLE_1"."PERSON_NAME")
AS "ASSIGNED_TO",
CASE
WHEN "P_IT_ISSUES"."STATUS" = 'Open'
THEN
'<aaab style= " color: green; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
WHEN "P_IT_ISSUES"."STATUS" = 'On-Hold'
THEN
'<aaab style= " color: red; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
ELSE
'<aaab style= " color: red; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
END AS status -> this!
FROM "P_IT_PEOPLE" "P_IT_PEOPLE_1",
"P_IT_DEPARTMENTS" "P_IT_DEPARTMENTS",
"P_IT_PEOPLE" "P_IT_PEOPLE",
"P_IT_ISSUES" "P_IT_ISSUES"
WHERE "P_IT_ISSUES"."IDENTIFIED_BY_PERSON_ID" =
"P_IT_PEOPLE"."PERSON_ID"
AND "P_IT_ISSUES"."ASSIGNED_TO_PERSON_ID" =
"P_IT_PEOPLE_1"."PERSON_ID"(+)
AND "P_IT_ISSUES"."RELATED_DEPT_ID" = "P_IT_DEPARTMENTS"."DEPT_ID"
但是,我会进一步重写该代码并且
- 引用 table 和列时省略双引号
- 使用正确的(阅读:更简单)table 别名
- 删除不必要的列别名
- 重写 FROM 子句并显式加入 tables
像这样:
SELECT i.issue_summary,
b.person_name AS identified_by,
i.identified_date,
d.dept_name,
DECODE (a.person_name, NULL, 'Unassigned', a.person_name)
AS assigned_to,
CASE
WHEN i.status = 'Open'
THEN
'<aaab style= " color: green; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
WHEN i.status = 'On-Hold'
THEN
'<aaab style= " color: red; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
ELSE
'<aaab style= " color: red; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
END
AS status
FROM p_it_issues i
JOIN p_it_departments d ON i.related_dept_id = d.dept_id
JOIN p_i_people b ON i.identified_by_person_id = b.person_id
LEFT JOIN p_it_people a ON a.person_id = i.assigned_to_person_id;
这不是更简单、更易于阅读和维护吗?
case 语句的最后一行无效。
case when "P_IT_ISSUES"."STATUS" ='Open'
then '<aaab style= " color: green; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
when "P_IT_ISSUES"."STATUS" ='On-Hold'
then '<aaab style= " color: red; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
else '<aaab style= " color: blue; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
end as "Status",
如果您不使用双引号标识符并使用更简单的 table 别名,您可能还会发现您的代码更易于阅读,但我意识到这段代码可能是从某处生成的。
我正在使用下面的查询根据列值突出显示状态列。 它在 else 块中因错误而失败: ORA-20999: 解析 SQL 查询失败!
ORA-06550:第 12 行,第 15 列:ORA-00923:在预期位置找不到 FROM 关键字
哪里出错了??
似乎 CASE
(选择状态)会导致问题,因为
- 以逗号结尾,后面没有任何内容
- 您将整个 CASE 结构命名为
"PT_IT_ISSUES"."STATUS"
,这是一个列名;你应该使用 alias,例如只是status
像这样:
SELECT "P_IT_ISSUES"."ISSUE_SUMMARY" AS "ISSUE_SUMMARY",
"P_IT_PEOPLE"."PERSON_NAME" AS "IDENTIFIED_BY",
"P_IT_ISSUES"."IDENTIFIED_DATE" AS "IDENTIFIED_DATE",
"P_IT_DEPARTMENTS"."DEPT_NAME" AS "DEPT_NAME",
DECODE ("P_IT_PEOPLE_1"."PERSON_NAME",
NULL, 'Unassigned',
"P_IT_PEOPLE_1"."PERSON_NAME")
AS "ASSIGNED_TO",
CASE
WHEN "P_IT_ISSUES"."STATUS" = 'Open'
THEN
'<aaab style= " color: green; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
WHEN "P_IT_ISSUES"."STATUS" = 'On-Hold'
THEN
'<aaab style= " color: red; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
ELSE
'<aaab style= " color: red; " >'
|| TO_CHAR ("P_IT_ISSUES"."STATUS", '999,999,999,999,999')
|| '</aaab>'
END AS status -> this!
FROM "P_IT_PEOPLE" "P_IT_PEOPLE_1",
"P_IT_DEPARTMENTS" "P_IT_DEPARTMENTS",
"P_IT_PEOPLE" "P_IT_PEOPLE",
"P_IT_ISSUES" "P_IT_ISSUES"
WHERE "P_IT_ISSUES"."IDENTIFIED_BY_PERSON_ID" =
"P_IT_PEOPLE"."PERSON_ID"
AND "P_IT_ISSUES"."ASSIGNED_TO_PERSON_ID" =
"P_IT_PEOPLE_1"."PERSON_ID"(+)
AND "P_IT_ISSUES"."RELATED_DEPT_ID" = "P_IT_DEPARTMENTS"."DEPT_ID"
但是,我会进一步重写该代码并且
- 引用 table 和列时省略双引号
- 使用正确的(阅读:更简单)table 别名
- 删除不必要的列别名
- 重写 FROM 子句并显式加入 tables
像这样:
SELECT i.issue_summary,
b.person_name AS identified_by,
i.identified_date,
d.dept_name,
DECODE (a.person_name, NULL, 'Unassigned', a.person_name)
AS assigned_to,
CASE
WHEN i.status = 'Open'
THEN
'<aaab style= " color: green; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
WHEN i.status = 'On-Hold'
THEN
'<aaab style= " color: red; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
ELSE
'<aaab style= " color: red; " >'
|| TO_CHAR (i.status, '999,999,999,999,999')
|| '</aaab>'
END
AS status
FROM p_it_issues i
JOIN p_it_departments d ON i.related_dept_id = d.dept_id
JOIN p_i_people b ON i.identified_by_person_id = b.person_id
LEFT JOIN p_it_people a ON a.person_id = i.assigned_to_person_id;
这不是更简单、更易于阅读和维护吗?
case 语句的最后一行无效。
case when "P_IT_ISSUES"."STATUS" ='Open'
then '<aaab style= " color: green; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
when "P_IT_ISSUES"."STATUS" ='On-Hold'
then '<aaab style= " color: red; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
else '<aaab style= " color: blue; " >'
||to_char("P_IT_ISSUES"."STATUS",'999,999,999,999,999')||'</aaab>'
end as "Status",
如果您不使用双引号标识符并使用更简单的 table 别名,您可能还会发现您的代码更易于阅读,但我意识到这段代码可能是从某处生成的。