SELECT (SELECT GDS_ID
          FROM (SELECT T.GDS_ID, SUM(ORDER_MONEY)
                  FROM T_ORD_INFO T
                 WHERE T.ORDER_ID = INFO.ORDER_ID
                 GROUP BY T.GDS_ID
                 ORDER BY SUM(ORDER_MONEY) DESC)
         WHERE ROWNUM = 1) AS GDS_ID --商品名称
  FROM T_ORD_MAIN_INFO INFO
报info.order_id标识符无效,实际是表T_ORD_MAIN_INFO是存在该字段的,请问是什么问题。

解决方案 »

  1.   

    嵌套select执行顺序为由内向外,执行内部select时,还没有INFO这个别名,所以是无效的
      

  2.   

    嵌套太多,隔了2层认不到。可以改成SELECT (SELECT max(T.GDS_ID)KEEP(dense_rank LAST ORDER BY SUM(ORDER_MONEY))
                      FROM T_ORD_INFO T
                     WHERE T.ORDER_ID = INFO.ORDER_ID
                     GROUP BY T.GDS_ID
                     ) AS GDS_ID --商品名称
      FROM T_ORD_MAIN_INFO INFO
      

  3.   

    嵌套问题,程序认不出info这个别名
      

  4.   

    sql语句在执行到info.order_id,没有执行  FROM T_ORD_MAIN_INFO INFO这句,所以出错