SQL:员工ID的左连接

时间:2017-06-09 20:36:23

标签: sql oracle11g

我对SQL很新,但在研究了这个问题之后,我一直无法找到适合我的答案。

TL-DR: 我试图将审批者姓名和审批状态引入显示未发布期刊的查询。因为我已经带来了'Created_by' name我需要匹配两次用户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":无效的标识符   00904. 00000 - "%s:无效标识符"   *原因:
  *行动:   行错误:14列:35

感激不尽的任何帮助。

欧文

1 个答案:

答案 0 :(得分: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'   

当你有所有内部连接时,你使用旧式连接并不重要,现在你需要一个左连接,你已经加入了现代世界的其他人。