我正在尝试运行一个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的新手,所以我提前道歉,如果它是一些我忽略的简单。
答案 0 :(得分:3)
我认为您需要一个where
子句,如下所示:
where "date" between current date - 2 years and current date
您需要双引号,因为date
是保留字。其余的只是为了在过去两年中获得约会。