Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 如何在Oracle中比较两列并将最大列作为新列返回_Sql_Oracle - Fatal编程技术网

Sql 如何在Oracle中比较两列并将最大列作为新列返回

Sql 如何在Oracle中比较两列并将最大列作为新列返回,sql,oracle,Sql,Oracle,以下是我尝试过的: SELECT cln.CLNID, MAX(cln.lastinputdate) clnlast , MAX(subac.lastinputdate) sublast , (CASE WHEN clnlast > sublast THEN clnlast ELSE sublast END) as lasttime FROM IBROKER.cln cln LEFT JOIN IBROKER.ClnSrvSub

以下是我尝试过的:

SELECT
  cln.CLNID,
  MAX(cln.lastinputdate) clnlast ,
  MAX(subac.lastinputdate) sublast , 
  (CASE
      WHEN clnlast > sublast   
  THEN clnlast
      ELSE sublast 
  END) as lasttime
FROM
  IBROKER.cln cln
LEFT JOIN IBROKER.ClnSrvSubAc subac
ON
  cln.clnid=subac.clnid
GROUP BY
  cln.clnid,
但最终会出现错误“ORA-00904:“CLNLAST”:无效标识符”


请提供帮助。

您不能在
选择列表的其他位置引用
选择列表中定义的别名。您需要使用实际的列名。在这里,您也不需要使用
案例
——Oracle提供了
最大的
功能

 greatest( max( cln.lastinputdate ), max( subac.lastinputdate ) )

在这种情况下,不能使用列别名。我认为应该是:

SELECT
  cln.CLNID,
  MAX(cln.lastinputdate) clnlast ,
  MAX(subac.lastinputdate) sublast , 
  (CASE
      WHEN MAX(cln.lastinputdate)> MAX(subac.lastinputdate)
  THEN MAX(cln.lastinputdate)
      ELSE MAX(subac.lastinputdate)
  END) as lasttime
FROM
  IBROKER.cln cln
LEFT JOIN IBROKER.ClnSrvSubAc subac
ON
  cln.clnid=subac.clnid
GROUP BY
  cln.clnid;
max(max(col1),max(col2))