【发布时间】:2021-01-30 19:56:54
【问题描述】:
编辑: 结果应该是这样的: desired result
我有这个问题:
SELECT DISTINCT mitarbeiter.mitarbnr, mitarbeiter.login, mitarbeiter.name1, mitarbeiter.name2
FROM vertragspos
left join vertrag_ek_vk_zuord ON vertragspos.id = vertrag_ek_vk_zuord.ek_vertragspos_id
left join mitarbeiter ON vertrag_ek_vk_zuord.anlage_mitarbnr = mitarbeiter.mitarbnr
left join vertragskopf ON vertragskopf.id = vertragspos.vertrag_id
left join
(
SELECT wkurse.*, fremdwaehrung.wsymbol
FROM wkurse
INNER join
(
SELECT lfdnr, Max(tag) AS maxTag
FROM wkurse
WHERE tag < SYSDATE
GROUP BY lfdnr
) t1
ON wkurse.lfdnr = t1.lfdnr AND wkurse.Tag = t1.maxTag
INNER JOIN fremdwaehrung ON wkurse.lfdnr = fremdwaehrung.lfdnr
) wkurse ON vertragskopf.blfdwaehrung = wkurse.lfdnr
left join
(
SELECT vertrag_ID, Sum (preis) preis, Sum (menge) menge, Sum (preis * menge / Decode (vertragskopf.zahlintervall, 1,1,2,2,3,3,4,6,5,12,1) / wkurse.kurs) vertragswert
FROM vertragspos
GROUP BY vertrag_ID
) s ON vertragskopf.id = s.vertrag_id
但我总是在第 21 行 Pos 145 上遇到错误:
ORA-00904 WKURSE.KURS invalid identifier
WKURSE 表应该已经在上面加入了,但是为什么我仍然得到错误? 我怎样才能加入所有这些表? 我需要加入所有这些表: Mitarbeiter、Vertragspos、vertrag_ek_vk_zuord、wkurse、fremdwaehrung、vertragskopf。
什么是正确的语法?我正在使用 SQL 工具 1,8 b38 谢谢。
【问题讨论】:
-
我认为您不能在子查询中访问 WKURSE.kurs,因为 WKURSE 本身就是一个子查询。
-
这张桌子是什么? “vertragskopf”你在加入条件中使用它,但没有提到她......请在你的加入条款中添加它......
-
@ellawidya 你明白我的评论吗?
-
@VBoka,是的,我愿意。我已更改并加入表 vertragskopf 但它仍然给出相同的错误结果。
-
很高兴您找到了解决问题的方法。但是,实际的答案/解决方案应该不被编辑到您的问题中。一般来说,您应该edit 问题来澄清它,但不要在其中包含答案。您应该使用用于解决问题的代码/解决方案创建自己的答案,然后接受它(系统可能需要 48 小时延迟才能这样做)。当你自己解决了问题时,answering your own question is encouraged。
标签: sql oracle join group-by sum