我对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
感激不尽的任何帮助。
欧文
答案 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'
当你有所有内部连接时,你使用旧式连接并不重要,现在你需要一个左连接,你已经加入了现代世界的其他人。