2017-06-09 72 views
0

我对SQL非常陌生,但在研究此问题后,我一直无法找到适合我的答案。SQL:员工ID左加入

TL-DR: 我试图将审批者名称和审批状态引入显示未发布期刊的查询。由于我已经引入'Created_by'这个名字,所以我需要两次与用户id表匹配,但使用不同的列。

GL_JE_BATCHES为我提供了工作流程和approver_id字段,基本上我想将这两列添加到我的现有报告中。通过查找approver_id对用户名表并使用名称而不是id的复杂性。

这里是我到目前为止的代码:

`select distinct hdr.JE_BATCH_ID, 
hdr.JE_HEADER_ID, 
usr.description Preparer, 
hdr.CREATED_BY, hdr.CREATION_DATE, 
gjb.approver_employee_id, 

DECODE (gjb.approval_status_code, 
'A', 'Approved', 
'I', 'In Process', 
'J', 'Rejected', 
'R', 'Required', 
'V', 'Validation Failed', 
'Z', 'N/A') Workflow_Status 

from gl.GL_JE_HEADERS hdr, apps.fnd_user usr, GL.GL_Ledgers ldg 

left join gl.GL_JE_BATCHES gjb ON hdr.JE_BATCH_ID = gjb.JE_BATCH_ID 

where 1=1 
and hdr.created_by = usr.user_id 
and hdr.Ledger_ID = ldg.Ledger_ID 
and hdr.PERIOD_NAME = 'MAY-17' 
--and hdr.JE_BATCH_ID = gjb.JE_BATCH_ID 
    and hdr.STATUS = 'U'  

运行此代码我收到以下错误:

ORA-00904: "HDR"."JE_BATCH_ID": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause:
*Action: Error at Line: 14 Column: 35

任何帮助,感激地接受。

欧文

+2

请不要混合隐式和显式连接语法......你甚至不应该使用隐式语法。此语法已过时[** 25年前**](http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt)!作为一个经验法则,你应该在WHERE子句中永远不要使用''''。 – Siyual

+0

@Siyual您键入的地方而不是从 –

+0

@AaronDietz啊,所以我做到了。头脑必须已经处于周末模式:/现在编辑它太晚了。 – Siyual

回答

0

您需要使用有效的SQL语法,就像这样:

from gl.GL_JE_HEADERS hdr 
join apps.fnd_user usr on hdr.created_by = usr.user_id 
join GL.GL_Ledgers ldg on hdr.Ledger_ID = ldg.Ledger_ID 
left join gl.GL_JE_BATCHES gjb ON hdr.JE_BATCH_ID = gjb.JE_BATCH_ID 
where 
    hdr.PERIOD_NAME = 'MAY-17' 
--and hdr.JE_BATCH_ID = gjb.JE_BATCH_ID 
    and hdr.STATUS = 'U' 

当你把所有内部连接你使用旧式连接它没有问题,现在你需要一个左加入你加入我们其他人在现代世界。