代码之家  ›  专栏  ›  技术社区  ›  Vijay

sql查询问题

  •  0
  • Vijay  · 技术社区  · 14 年前

    为什么这个问题给了我一个答案error:ORA-01790

    SELECT TO_CHAR(logical_date,'MM') MONTH
           FROM logical_date WHERE logical_date_type='B'        
    UNION 
    SELECT 
            TO_CHAR(logical_date,'MM')+1 MONTH
            FROM logical_date WHERE logical_date_type='B'
    

    但当我分别运行它们时,它们会给出正确的输出。

    2 回复  |  直到 14 年前
        1
  •  4
  •   D'Arcy Rittich    14 年前

    +1

    SELECT TO_CHAR(logical_date,'MM')+0 MONTH 
           FROM logical_date WHERE logical_date_type='B'         
    UNION  
    SELECT  
            TO_CHAR(logical_date,'MM')+1 MONTH 
            FROM logical_date WHERE logical_date_type='B' 
    
        2
  •  3
  •   APC    14 年前

    你想在这个表中有一组不同的月份,再加上接下来的所有月份,对吗?

    select to_char(logical_date, 'MM') MONTH 
    from (   
        SELECT logical_date
        FROM logical_date WHERE logical_date_type='B'        
        UNION 
        SELECT ADD_MONTHS(logical_date,1)
        FROM logical_date WHERE logical_date_type='B'
    )
    /
    

    或者我们可以使用 TRUNC(logical_date, 'MM') 要检索每月的第一天,我们是否需要保留日期数据类型。