使用SQL和DB2 for i进行日期算术

时间:2013-01-14 14:10:56

标签: sql db2 ibm-midrange

我正在尝试运行一个SQL查询,它将更新特定表中的信息。我遇到的问题是我需要查询来提取今天的日期,无论查询运行的日期是什么,然后只记录回溯到几年的记录。然后我希望它在两年的时间段内返回AVG CUR_CASH_UNITS。我已经尝试过DATEDIFF和DATEADD,这些似乎不适用于我所拥有的系统,因为它返回* libl错误。这就是我所拥有的:

Select  Month,
    SSSALESNAM,
    CAT,
    Sum(Units) as Units     
From    DW****.******EG
Inner Join  (Select CAT,
                STORE,
                MONTH(DATE) As Month,
                Sum(CUR_CASH_UNITS) As Units
         From   DW*******.****AT        
         Inner Join (Select CAT,
                            CATNUM
                     From   DW****.*****ST) As Category_List             
        On         DW*******.****AT.CATEGORY_NUMBER=Category_List.CATNUM
        --Where  (((CUR_CASH_UNITS.MONTH(DATE)) Between MONTH(DATE) And (MONTH(DATE)-24MONTH))
        Group by Cat,
                 Store,
                 MONTH(DATE)) As Cash_Units

On          DW****.******EG.SSSTR=Cash_Units.STORE           
Group By    Month,
        SSSALESNAM,
        CAT
Order By    Month,
        SSSALESNAM

上面注释掉的部分只是我尝试使用日期算法的一种方法。使用Where语句注释掉了正确执行的查询。我表中的日期列标记为DATE,格式为YYYY-MM-DD。 SQL的新手,所以我提前道歉,如果它是一些我忽略的简单。

1 个答案:

答案 0 :(得分:3)

我认为您需要一个where子句,如下所示:

where "date" between current date - 2 years and current date

您需要双引号,因为date是保留字。其余的只是为了在过去两年中获得约会。