一尘不染

SQL和DB2 for i的日期算术

sql

我正在尝试运行一个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有点新,所以如果我忽略了一些简单的事情,我会提前道歉。


阅读 162

收藏
2021-03-08

共1个答案

一尘不染

我认为您想要一个where类似以下的子句:

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

您需要双引号,因为这date是保留字。剩下的只是为了过去两年的约会。

2021-03-08