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))