sql - Oracle SQL DB select muti join error join error - ORA-00933: SQL command not properly ended
问题描述
i am trying to join few tables in order to fetch data, the problem over here is when i apply the filter i was not able to fetch the data and i am getting the below error.
below are the tables
In my case the foriegn keys referenced while joining the table is ending with _UID
TBL_ABC_CUSTOMER_D
TBL_BBC_CUSTOMER_STATUS_D
TBL_NBC_CUSTOMER_TYPE_D
TBL_KBC_CUSTOMER_SEGMENT_TYPE_D
TBL_NCC_CUSTOMER_SEGMENT_D
SQL Query
SELECT
ABC.ABC_DES_NAME,
ABC.ABC_DES_LASTNAME,
ABC.ABC_DAT_BIRTH_DATE,
ABC.ABC_LOC,
ABC.ABC_MOBILE_NUM,
ABC.ABC_FLG_GENDER,
ABC.ABC_EMAIL,
ABC.TBL_SYSTEM,
ABC.TBL_EFFECTIVE_ON,
ABC.TBL_EXPIRED_ON
FROM
DWH_SCHEMA.TBL_ABC_CUSTOMER_D ABC /*CUSTOMER 1*/
JOIN
DWH_SCHEMA.TBL_BBC_CUSTOMER_STATUS_D BBC /*CUSTOMER STATUS 2*/
ON ABC.BBC_COD_CUSTOMER_STATUS_UID = BBC.BBC_COD_CUSTOMER_STATUS_UID
and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') --/*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
and BBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') --/*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
JOIN
DWH_SCHEMA.TBL_NBC_CUSTOMER_TYPE_D NBC /*CUSTOMER SUPPLIER 3*/
ON ABC.NBC_COD_CUSTOMER_TYPE_UID = NBC.NBC_COD_CUSTOMER_TYPE_UID
and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
and NBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
JOIN
DWH_SCHEMA.TBL_KBC_CUSTOMER_SEGMENT_TYPE_D KBC /*CUSTOMER SEGMENT TYPE 4*/
ON ABC.KBC_COD_SEGMENT_TYPE_UID = KBC.KBC_COD_SEGMENT_TYPE_UID
and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
and KBC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
JOIN
DWH_SCHEMA.TBL_NCC_CUSTOMER_SEGMENT_D NCC /*CUSTOMER SEGMENT 5*/
ON ABC.NCC_COD_SEGMENT_UID = NCC.NCC_COD_SEGMENT_UID
and ABC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
and NCC.TBL_EXPIRED_ON = TO_DATE('31.12.9999', 'DD.MM.YYYY') /*IT ALLOWS YOU TO CONSIDER THE LAST SNAPSHOT FOR EACH TABLE*/
Error
ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"
*Cause:
*Action:
Error at Line: 9 Column: 1
how to resolve the above error ?
解决方案
Joins first, conditions next.
No:
from emp e
where e.job = 'SALESMAN'
join dept d on d.deptno = e.deptno
where d.loc = 'LONDON'
Yes:
from emp e join dept d on d.deptno = e.deptno
where e.job = 'SALESMAN'
and d.loc = 'LONDON'
Apply that to your code.
推荐阅读
- sql - 如何在 SQL Server 上按用户计算每天的出勤时间
- sql-server - 创建具有不同名称的 .mdf 副本
- reactjs - 将状态从子组件传递给父组件
- c# - C#将输入的文本框值减去标签值
- angular - Angular App - 在模式(演示模式和应用模式)之间切换?
- apache-spark - Spark s3a 抛出 403 错误,而相同的配置适用于 AwsS3Client
- c++ - 通过 this 指针的成员变量和函数
- javascript - 使用 getElementById 在 HTML 中添加 Js 变量时出现问题
- azure-active-directory - 筛选修改者为当前用户的 Microsoft Graph Drive 搜索结果
- node.js - Cloudformation 为 javascript 部署 aws sdk