2014-04-17 48 views
0

回到這裏最大的一個作爲新列是什麼,我已經試過:如何比較兩個列和甲骨文

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’:無效標識符「

請幫忙。

+4

'最大(最大(col1),最大(col2))' –

回答

0

您不能在select列表中的其他地方引用在select列表中定義的別名。您需要使用實際的列名稱。你也不需要使用一個case這裏 - 甲骨文公司在這種情況下,提供了greatest功能

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

不能使用列別名。我認爲它應該是:

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;