ORA-00907: Order by 中缺少右括号提示

Bea*_*ode 3 sql oracle

Order by 中缺少右括号提示!

如果在sal_sale_fct 中找不到行,我想从sal_sale_fct 每个shp.DAT_CALCULATE 获取最后一个amn_unit_pric_rial,从shp_inventory_fct 获取shp.COD_PROD_SAPRB 返回sal_sale_fct 中最后一个日期的最后价格

select shp.DAT_CALCULATE,
      shp.COD_PROD_SAPRB,     
          (select sal.amn_unit_pric_rial
                  from sal_sale_fct sal 
                 where rownum = 1
                   and shp.cod_prod_saprb = sal.saprb_cod_prod_saprb
                   and shp.dat_calculate <= sal.dat_ord_ordhe
                   order by sal.dat_ord_ordhe
                   ) price
  From shp_inventory_fct shp
Run Code Online (Sandbox Code Playgroud)

psa*_*j12 7

当您一起使用 rownum 和 order by 时,首先评估 rownum 。因此,第一行将不在 sal.dat_ord_ordhe 的 order by 中。所以你需要先按顺序排序,然后使用 rownum 选择第一行

select shp.DAT_CALCULATE,
  shp.COD_PROD_SAPRB,     
      (select price 
           From  (
             select sal.amn_unit_pric_rial price
              from sal_sale_fct sal 
             where shp.cod_prod_saprb = sal.saprb_cod_prod_saprb
               and shp.dat_calculate <= sal.dat_ord_ordhe
               order by sal.dat_ord_ordhe
               ) where  rownum = 1) Price
               From shp_inventory_fct shp
Run Code Online (Sandbox Code Playgroud)