【问题标题】:Max function in ORACLEORACLE 中的最大函数
【发布时间】:2012-08-18 15:05:24
【问题描述】:

我有一个具有以下结构的表DEMOTABLE(COL_ID INT,COL_DATE DATE).
为什么以下查询给我一个错误

错误代码 936,SQL 状态 42000:ORA-00936: 缺少表达式

SELECT MAX(
SELECT TO_CHAR(COL_DATE,'YYYY-MM-DD HH24:MI:SS') 
FROM DEMOTABLE WHERE COL_ID IN(1,2,3))
FROM DUAL

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    听起来像你想要的

    SELECT to_char( max( col_date ),
                    'yyyy-mm-dd hh24:mi:ss' )
      FROM demotable
     WHERE col_id IN (1,2,3)
    

    通常,您会希望先执行MAX,然后才将最大的日期转换为字符串。这既是因为您想使用日期比较语义,又因为进行比较更便宜,并且只对您感兴趣的一行进行数据类型转换。您还想从表中SELECT重新感兴趣,不是来自DUAL

    【讨论】:

    • @svkvvenky - 抱歉,我省略了 WHERE 子句。更正那个错误。
    • @Justin-非常感谢您的即时回复。
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多