【发布时间】:2016-05-31 22:03:32
【问题描述】:
我有一个通过 Oracle 11g 客户端连接到远程 Oracle 数据库的工作查询。为了合并基于别名的参数,我将此查询用作子查询,其中包含主查询中的参数。我看不出有什么问题——尽管很明显是这样——所以在我再研究这个小时之前,我想我会把代码提交给专家:
SELECT *
FROM
(
SELECT "UNITS"."UnitNumber", "UNITS"."ModelYear", "UNITS"."Make", "UNITS"."Model", "UNITS"."Class3",
"UNITS"."Class3Description", "UNITS"."TechnicalSpecification", SUBSTR("UNITS"."TechnicalSpecification", 13, 1) AS "FSC",
"UNITS"."OwnerDepartment", "UNITS"."UnitStatus",
CASE WHEN "UNITS"."Class3" = '1' AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'F' THEN 'Y'
WHEN ("UNITS"."Class3" = '10' OR "UNITS"."Class3" = '15') AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'U' THEN 'Y'
WHEN "UNITS"."Class3" = '11' AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'D' THEN 'Y'
WHEN ("UNITS"."Class3" = '2' OR "UNITS"."Class3" = '8' OR "UNITS"."Class3" = '18') AND
SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'C' THEN 'Y'
WHEN ("UNITS"."Class3" = '3' OR "UNITS"."Class3" = '9' OR "UNITS"."Class3" = '17') AND
SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'B' THEN 'Y'
WHEN "UNITS"."Class3" = '16' AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'S' THEN 'Y'
WHEN ("UNITS"."Class3" = '13' OR "UNITS"."Class3" = '4') AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'L' THEN 'Y'
WHEN ("UNITS"."Class3" = '12' OR "UNITS"."Class3" = '14') AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'G' THEN 'Y'
WHEN ("UNITS"."Class3" = '19' OR "UNITS"."Class3" = '20') AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'R' THEN 'Y'
WHEN "UNITS"."Class3" = '5' AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'E' THEN 'Y'
WHEN "UNITS"."Class3" = '6' AND SUBSTR("UNITS"."TechnicalSpecification", 13, 1) <> 'H' THEN 'Y'
ELSE ''
END AS "MISMATCH"
FROM "MFIVE"."VIEW_ALL_UNITS" "UNITS"
WHERE "UNITS"."OwnerDepartment" LIKE '580' AND "UNITS"."UnitStatus"='A'
) "U"
WHERE "U"."MISMATCH" = {?Mismatch}
ORDER BY "U"."UnitNumber"
当我尝试运行此查询时,我收到“无法从数据库中检索日期”错误,ORA-00936:缺少表达式。
在我的一生中,我看不出问题出在哪里。任何帮助将不胜感激。
【问题讨论】:
-
这是什么:{?不匹配}
-
这会提示 Crystal Reports 13 请求参数。在这种情况下,缺少值将返回所有记录,而“Y”将仅返回 MISMATCH 别名 =“Y”的那些记录。
-
那么也许你也应该用 CR 标记?如果您直接从 sql 运行查询会怎样?删除查询组件,直到问题消失,然后一次添加一个。那是其他人必须做的。由于您不提供表定义,因此无法运行此查询来查看如何修复它。
-
我按照您的建议添加了 CR 标签。 • 由于系统的管理限制,我没有任何方法可以直接运行查询,所以我所能做的就是反复尝试在 CR 中运行它并根据反馈进行调整。 • 至于删除查询组件,没有太多要删除的,因为我知道整个子查询运行没有问题。问题在于前 3 行或最后两行。
-
为什么所有的列名都是字符串文字?这是oracle的工作原理吗?看起来很邋遢,很难读写。
标签: sql oracle11g crystal-reports