【发布时间】:2016-05-07 00:01:36
【问题描述】:
我正在使用 Crystal Reports 13 添加命令从通过 Oracle 11g 客户端连接的 Oracle 数据库中选择记录。我收到的错误是 ORA-00933:SQL 命令未正确结束,但我的代码找不到任何问题(不完整):
/* Determine units with billing code effective dates in the previous month */
SELECT "UNITS"."UnitNumber", "BILL"."EFF_DT"
FROM "MFIVE"."BILL_UNIT_ACCT" "BILL"
LEFT OUTER JOIN "MFIVE"."VIEW_ALL_UNITS" "UNITS" ON "BILL"."UNIT_ID" = "UNITS"."UNITID"
WHERE "UNITS"."OwnerDepartment" LIKE '580' AND TO_CHAR("BILL"."EFF_DT", 'MMYYYY') = TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), -1), 'MMYYYY')
INNER JOIN
/* Loop through previously identified units and determine last billing code change prior to preious month */
(
SELECT "BILL2"."UNIT_ID", MAX("BILL2"."EFF_DT")
FROM "MFIVE"."BILL_UNIT_ACCT" "BILL2"
WHERE TO_CHAR("BILL2"."EFF_DT", 'MMYYYY') < TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE), -1), 'MMYYYY')
GROUP BY "BILL2"."UNIT_ID"
)
ON "BILL"."UNIT_ID" = "BILL2"."UNIT_ID"
ORDER BY "UNITS"."UnitNumber", "BILL"."EFF_DT" DESC
我们是一家将车辆(单元)出租给其他机构的国家实体。每个单位都有一个带有相关生效日期的帐单代码。该应用程序是为上个月的帐单代码更改的单位制定报告。
使问题复杂化的是,对于上述每个单位,报告还必须显示上个月之前的最新帐单代码和相关生效日期。一个简单的例子:
鉴于此数据并假设现在是 2016 年 4 月(为了清楚起见,排序)...
Unit Billing Code Effective Date Excluded
---- ------------ -------------- --------
1 A 04/15/2016 Present month
1 B 03/29/2016
1 A 03/15/2016
1 C 03/02/2016
1 B 01/01/2015
2 C 03/25/2016
2 A 03/04/2016
2 B 07/24/2014
2 A 01/01/2014 A later effective date prior to previous month exists
3 D 11/28/2014 No billing code change during previous month
报告应返回以下内容...
Unit Billing Code Effective Date
---- ------------ --------------
1 B 03/29/2016
1 A 03/15/2016
1 C 03/02/2016
1 B 01/01/2015
2 C 03/25/2016
2 A 03/04/2016
2 B 07/24/2014
任何解决错误的帮助将不胜感激。
【问题讨论】:
-
JOIN子句不能跟在WHERE子句之后
标签: sql oracle oracle11g crystal-reports