这个Oracle查询有什么问题?(ORA-00904:&x201C;md.valores&&x201D;";COD_TIPO_EXPE";:无效标识符)

这个Oracle查询有什么问题?(ORA-00904:&x201C;md.valores&&x201D;";COD_TIPO_EXPE";:无效标识符),oracle,Oracle,我正在尝试编写一个SQL查询。如果它在Oracle SQL Developer中工作,我将在TableAdapters查询中使用它。这就是问题所在 SELECT * FROM (SELECT cexp.expediente.num_expe "Num. Expediente", cexp.expediente.nif nif, cexp.expediente.interesado nombre, MAX

我正在尝试编写一个SQL查询。如果它在Oracle SQL Developer中工作,我将在TableAdapters查询中使用它。这就是问题所在

        SELECT *
  FROM (SELECT   cexp.expediente.num_expe "Num. Expediente",
                 cexp.expediente.nif nif, cexp.expediente.interesado nombre,
                 MAX (DECODE (a.descripcion,
                              'NUMERO_FACTURA', cexp.md_valores.valor,
                              NULL
                             )
                     ) "Numero Factura",
                 MAX (DECODE (a.descripcion,
                              'IMPORTE_FACTURA', cexp.md_valores.valor,
                              NULL
                             )
                     ) "Importe bruto",
                 MAX (DECODE (a.descripcion,
                              'IMPORTE_NETO', cexp.md_valores.valor,
                              NULL
                             )
                     ) "Importe neto",
                 MAX (DECODE (a.descripcion,
                              'FECHA_PRESENTACION_FACTURA', cexp.md_valores.valor,
                              NULL
                             )
                     ) "Fecha recepcion"
            FROM cexp.md_propiedades a

                 RIGHT JOIN
                 (cexp.expediente RIGHT JOIN cexp.md_valores
                 ON cexp.expediente.num_expe = cexp.md_valores.num_expe)
                 ON (a.propiedad = md_valores.propiedad)
               AND (a.cod_tipo_expe = md_valores.cod_tipo_expe) 
           WHERE cexp.expediente.cod_tipo_acto = '12EO' 
        GROUP BY cexp.expediente.num_expe,
                 cexp.expediente.interesado,
                 cexp.expediente.nif,
                 cexp.expediente.cod_tipo_expe)

文本:ORA-00904:“md_valores”。“COD_TIPO_EXPE”:识别无válido

您的
FROM
子句似乎无组织。我真的不确定您是如何尝试
右键连接这些表的。我能做的最好的安排是:

FROM cexp.md_propiedades a
   RIGHT JOIN cexp.md_valores
           ON ( a.propiedad = md_valores.propiedad
                AND a.cod_tipo_expe = md_valores.cod_tipo_expe) 
   RIGHT JOIN cexp.expediente 
           ON cexp.expediente.num_expe = cexp.md_valores.num_expe
看看这样行不行

您显示的错误表明,
COD\u TIPO\u EXPE
列既不存在于您称之为
md\u valores.COD\u TIPO\u EXPE
的表中,也不存在于您使用别名
a.COD\u TIPO\u EXPE
的表中。请检查此选项之一是否为真并修复它

编辑

由于您在所有表上都使用了架构名称(
cexp
),这可能是因为您在
md_valores
表上遗漏了它

FROM cexp.md_propiedades a
   RIGHT JOIN cexp.md_valores
           ON ( a.propiedad = cexp.md_valores.propiedad              --here
                AND a.cod_tipo_expe = cexp.md_valores.cod_tipo_expe) --here
   RIGHT JOIN cexp.expediente 
           ON cexp.expediente.num_expe = cexp.md_valores.num_expe

我不明白你是怎么加入这两张桌子的。如果它没有给你错误,看看你是否得到了预期的输出。如果没有,那么您可能必须在一个位置将
右连接
左连接
交换

我还假设查询中使用的所有列都存在于给定的表中

SELECT *
FROM(SELECT   c.num_expe "Num. Expediente",
                 c.nif nif, c.interesado nombre,
                 MAX (DECODE (a.descripcion,
                              'NUMERO_FACTURA', b.valor,
                              NULL
                             )
                     ) "Numero Factura",
                 MAX (DECODE (a.descripcion,
                              'IMPORTE_FACTURA', b.valor,
                              NULL
                             )
                     ) "Importe bruto",
                 MAX (DECODE (a.descripcion,
                              'IMPORTE_NETO', b.valor,
                              NULL
                             )
                     ) "Importe neto",
                 MAX (DECODE (a.descripcion,
                              'FECHA_PRESENTACION_FACTURA', b.valor,
                              NULL
                             )
                     ) "Fecha recepcion"
    FROM cexp.md_propiedades a
        RIGHT JOIN
    cexp.md_valores b
        ON (a.propiedad = b.propiedad AND a.cod_tipo_expe = b.cod_tipo_expe)
    RIGHT JOIN      
        cexp.expediente c 
        ON c.num_expe = b.num_expe
    WHERE c.cod_tipo_acto = '12EO' 
    GROUP BY c.num_expe,
    c.interesado,
    c.nif,
    c.cod_tipo_expe
    )

cexp
是您的模式名称吗?可能应该是cexp.md_valores.cod_tipo_expe和cexp.md_valores.propiedad请以文本而不是图像的形式发布错误。错误消息表明您在某处引用了
“md_valores”
作为标识符,但它不在您显示的代码中。是否有更多-可能是订单条款?错误对话框中的查询也与您发布的内容不匹配,因此它可能位于您的真实选择列表中,或者真实查询中的任何位置…@AlexPoole这是同一个查询,只有查询在VS中执行,并且此更改*表示“Num.phastibute”、nif、nombre、“numo Factura”…相同的错误。我认为cexp.md_valores.propiedad但是这个失败了too@FranciscoJavierYanesDelgado试试我刚才做的编辑。如果不起作用,您必须向我们展示
md_valores
结构以及
md_propiedades
结构,以便我们进行检查。