ORACLE SQL-在WHERE子句中使用带有GROUP BY无效标识符的SUM

马特

我在ORACLE SQL中有一个查询,仅在debet_amount或credit_amount的总和大于或等于每个v_no 1000时,才需要返回结果。

当前错误

ORA-00904: "g"."COMPANY": invalid identifier
00904. 00000 -  "%s: invalid identifier"

当前查询

SELECT DISTINCT
g.company,
g.v_type,
g.v_no,
g.v_date,
g.a_year,
g.a_period, 
g.entry_date,
g.correction,
CASE WHEN g.mcompany IS NULL THEN 'FALSE' ELSE g.mcompany END AS mcompany,
g.debet_amount,
g.credit_amount,
g.amount,
v.userid
FROM genrow g, 
(SELECT v_no, SUM(debet_amount) AS debcomp FROM genrow GROUP BY v_no) subdeb,
(SELECT v_no, SUM(credit_amount) AS credcomp FROM genrow GROUP BY v_no) subcred
INNER JOIN genv v ON g.v_no = v.v_no AND g.company = v.company
WHERE g.v_no = subdeb.v_no
AND g.v_no = subcred.v_no
AND (subdeb.debcomp >= 1000 or subcred.credcomp >= 1000)
AND g.v_type IN ('M','Q','E')

预期输出示例

company v_type  v_no    v_date          a_year  a_period    entry_date  correction  mcompnay    debet_amount    credit_amount   amount  userid
02      EXT     2000    25-JAN-14       2014    1           28-JAN-14   N           FALSE       600                             600     USER13
02      EXT     2000    25-JAN-14       2014    1           28-JAN-14   N           FALSE       200                             200     USER16
02      EXT     2000    25-JAN-14       2014    1           28-JAN-14   N           FALSE       300                             300     USER12
02      EXT     4000    25-JAN-14       2014    1           28-JAN-14   N           FALSE                       500             500     USER19
02      M       4000    29-MAR-14       2014    3           07-APR-14   N           FALSE                       200             200     USER12
02      EXT     4000    25-JAN-14       2014    1           28-JAN-14   N           FALSE                       120             120     USER18
02      EXT     4000    25-JAN-14       2014    1           28-JAN-14   N           FALSE                       700             700     USER14
02      EXT     6000    25-JAN-14       2014    1           28-JAN-14   N           FALSE       1100                            1100    USER19
托斯滕·凯特纳(Thorsten Kettner)

问题在于您正在混合无法正确解析的隐式和显式联接。

这应该工作:

SELECT DISTINCT
    g.company,
    g.v_type,
    g.v_no,
    g.v_date,
    g.a_year,
    g.a_period, 
    g.entry_date,
    g.correction,
    CASE WHEN g.mcompany IS NULL THEN 'FALSE' ELSE g.mcompany END AS mcompany,
    g.debet_amount,
    g.credit_amount,
    g.amount,
    v.userid
FROM genrow g
INNER JOIN (SELECT v_no, SUM(debet_amount) AS debcomp FROM genrow GROUP BY v_no) subdeb ON g.v_no = subdeb.v_no
INNER JOIN (SELECT v_no, SUM(credit_amount) AS credcomp FROM genrow GROUP BY v_no) subcred ON g.v_no = subcred.v_no
INNER JOIN genv v ON g.v_no = v.v_no AND g.company = v.company
WHERE (subdeb.debcomp >= 1000 or subcred.credcomp >= 1000)
AND g.v_type IN ('M','Q','E');

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

oracle sql无效标识符错误

无效的标识符Oracle SQL Dev

Oracle SQL中的无效标识符

Oracle SQL多个左联接具有重复记录或“无效标识符”

Oracle PL / SQL ORA-00904无效的标识符

Oracle SQL 中部门 ID 的无效标识符

Sql上的无效标识符左加入oracle

oracle sql 表创建错误 %s: 无效标识符"

正在获取SQL错误:ORA-00904:“状态”:在oracle中使用连接时标识符无效

Oracle:无效的标识符

尝试创建表时 Oracle SQL“无效标识符错误”

在Oracle中的存储过程中获取无效的标识符和SQL忽略的错误

嵌套WITH子查询中的Oracle SQL无效标识符错误

SQL Oracle“无效标识符”和“表不存在”错误

Oracle sql 连接计数给了我 00904 的错误。00000 - "%s: 无效标识符

Oracle SQL Rewrite so 字段不返回无效标识符

oracle sql中的pivot时出现无效标识符错误

在Oracle中使用左外部联接时的无效标识符

在Oracle SQL Developer的视图的WHERE子句中使用USER

在 Oracle SQL 的 Where 子句中使用 Case 语句

Oracle在GROUP BY中的COUNT()别名上抛出“无效标识符”

Oracle无效标识符错误

Oracle-列名的无效标识符

oracle查询中的无效标识符

Oracle SQL:使用 Xmlagg 进行选择时缺少标识符错误

尝试在SQL / PLSQL中使用时的过程无效标识符

PL-SQL:ORA-00904-无效标识符-选择和枢轴子句中的列

使用SQL中的2个外键从表中选择数据-无效的标识符

SQL 无效标识符查询