2

我正在尝试运行将更新特定表中的信息的 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 来说有点新,所以如果我忽略了一些简单的事情,我提前道歉。

4

1 回答 1

3

我想你想要一个where像下面这样的子句:

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

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

于 2013-01-14T14:47:22.253 回答