Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 标量子查询中的子查询失败,错误为ORA-00936缺少表达式_Sql_Oracle_Ora 00936 - Fatal编程技术网

Sql 标量子查询中的子查询失败,错误为ORA-00936缺少表达式

Sql 标量子查询中的子查询失败,错误为ORA-00936缺少表达式,sql,oracle,ora-00936,Sql,Oracle,Ora 00936,这是不起作用的查询: SELECT distinct ord.DateOrdered , (SELECT docno FROM th_mm_c_orderline_history WHERE th_mm_c_orderline_history_id in (SELECT max(th_mm_c_orderline_history_id) FROM th_mm_c_orderline_history

这是不起作用的查询:

SELECT distinct ord.DateOrdered
   , (SELECT docno 
      FROM th_mm_c_orderline_history 
      WHERE th_mm_c_orderline_history_id 
            in (SELECT max(th_mm_c_orderline_history_id) 
                FROM th_mm_c_orderline_history 
                GROUP BY c_orderline_id ) 
      order by docno,c_orderline_id) as docno 
FROM c_order ord 
INNER JOIN c_orderline on c_orderline.c_order_id = ord.c_order_id 
INNER JOIN th_mm_c_orderline_history 
      on th_mm_c_orderline_history.c_order_id=ord.c_order_id
它向我抛出ORA-00936缺失表达式错误

此查询工作正常:

SELECT docno 
FROM th_mm_c_orderline_history 
WHERE th_mm_c_orderline_history_id 
      in (SELECT max(th_mm_c_orderline_history_id) 
          FROM th_mm_c_orderline_history 
          GROUP BY c_orderline_id ) 
order by docno,c_orderline_id as docno

只需从内联select中删除ORDERBY子句。在那里你不能使用ORDEBY子句。如果需要,您可以在“外部选择”中使用它…这就是您可以在不出错的情况下执行所有三项操作的方式:

SELECT distinct ord.DateOrdered
       , (SELECT docno FROM th_mm_c_orderline_history 
          WHERE th_mm_c_orderline_history_id 
                 in (SELECT max(th_mm_c_orderline_history_id) 
                     FROM th_mm_c_orderline_history 
                     GROUP BY c_orderline_id) 
          ) as docno 
FROM c_order ord 
INNER JOIN c_orderline on c_orderline.c_order_id = ord.c_order_id 
INNER JOIN th_mm_c_orderline_history on th_mm_c_orderline_history.c_order_id=ord.c_order_id

可以在整个select语句的末尾使用ORDERBY语句。由于select语句中未使用列C_ORDERLINE_ID,order by语句中可能会出现错误。在下面尝试这个版本

 SELECT DISTINCT
       C_ORDER.DATEORDER,
       (SELECT DOCNO
          FROM TH_MM_C_ORDERLINE_HISTORY
         WHERE     C_ORDER_ID = C_ORDER_ID
               AND TH_MM_C_ORDERLINE_HISTORY_ID IN (  SELECT MAX (TH_MM_C_ORDERLINE_HISTORY_ID)
                                                        FROM TH_MM_C_ORDERLINE_HISTORY
                                                    GROUP BY C_ORDERLINE_ID)) AS DOCNO,
       C_ORDER.DOCUMENTNO
  FROM C_ORDER 
  INNER JOIN C_ORDERLINE ON C_ORDERLINE.C_ORDER_ID = C_ORDER_ID 
  ORDER BY DOCNO, C_ORDERLINE_ID;

Hi@nonsrithong请以文本形式向我们显示不起作用的查询?选择distinct order.DateOrdered,从th_mm_c_orderline_history中选择docno,其中Thu mm_c_orderline_history_id中选择maxth_mm_c_orderline_history_id从Thu mm_c_orderline_history组中按c_orderline_id按docno排序,c_orderline_id作为c_order ord内部连接c_orderline上的文档号。c_order_id=ord.c_order_id内部连接H_mm_c_orderline_历史记录。c_order_id=ord.c_order_id请不要将代码作为图像发布。请参阅此处了解更多详细信息,为什么:Hi@nonsrithong我希望我的回答对您有所帮助。请检查是否有帮助或正确: