我正在尝试运行一个SQL查询,该查询将更新特定表中的信息。我遇到的问题是,我需要查询以拉出今天的日期,而不管查询运行时的日期是什么,然后才拉回可追溯到几年的记录。然后,我希望它AVG在那两年的时间内返回CUR_CASH_UNITS的一个。我已经尝试过DATEDIFF和DATEADD,但它们似乎与我的系统不兼容,因为它会返回* libl错误。这是我所拥有的:
AVG
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有点新,所以如果我忽略了一些简单的事情,我会提前道歉。
Where
我认为您想要一个where类似以下的子句:
where
where "date" between current date - 2 years and current date
您需要双引号,因为这date是保留字。剩下的只是为了过去两年的约会。
date