Sql 计算日期范围

Sql 计算日期范围,sql,Sql,我试图通过下面的查询计算2009年6月1日之前90天和2009年6月1日之后90天售出的商品。它显示出一些错误。有人能帮我一下吗 SELECT location, SUM((CASE WHEN t.order_date DATEADD (DAY, -90, '6/1/2009') THEN t.Item ELSE NULL END) as Prior_Items, SUM(CASE WHEN t.order_date DATEADD (DAY, 89

我试图通过下面的查询计算2009年6月1日之前90天和2009年6月1日之后90天售出的商品。它显示出一些错误。有人能帮我一下吗

SELECT
location,                       
SUM((CASE WHEN t.order_date DATEADD (DAY, -90, '6/1/2009') THEN t.Item ELSE NULL END) as Prior_Items,
SUM(CASE WHEN t.order_date DATEADD (DAY, 89,  '6/1/2009') THEN t.Item ELSE NULL END) as Post_Items
ELSE NULL
END)
FROM mytable t
where date = '6/1/2009'
group by location

当你的情况没有正确形成时

CASE WHEN t.order_date DATEADD (DAY, -90, '6/1/2009') THEN t.Item ELSE NULL END
          ^^^^^^^^^^^^^^^^^^^^
很可能您想要的是:

CASE WHEN t.order_date>=DATEADD (DAY, -90, '6/1/2009') THEN t.Item ELSE NULL END
                      ^^

我猜你想要这样的东西

DECLARE @d DATETIME

SET @d = '20090106'


SELECT
location,                       
SUM(CASE WHEN t.order_date < @d and  t.order_date > DATEADD (DAY, -90, @d) THEN t.Item END) as Prior_Items,
SUM(CASE WHEN t.order_date >=@d AND  t.order_date <  DATEADD (DAY, 89,   @d) THEN t.Item END) as Post_Items
FROM mytable t
where t.order_date BETWEEN  DATEADD (DAY, -90, @d) AND DATEADD (DAY, 89,   @d)
group by location
DECLARE@d DATETIME
设置@d='20090106'
选择
地方
金额(当t.order_date<@d和t.order_date>date添加(天-90,@d),然后t.Item END)作为之前的_项目,
合计(当t.order\U date>=@d和t.order\U date
Some error—“我对那个东西做了些什么,现在这个东西坏了。”请更具体地说,你犯了什么错误?@Chris:愿意和我们分享一下“Some error”是什么吗?这样可以避免人们在确定解决方案之前先确定错误是什么。会给你带来什么样的错误?您是否错过了>和<在本例中,或者这只是一个复制错误?请尝试以下操作:选择位置,求和(当t.order\u日期添加(日期,-90,'6/1/2009')时的情况,然后t.Item ELSE 0结束)作为之前的项目,求和(当t.order\u日期添加(日期,89,'6/1/2009')时的情况,然后t.Item ELSE 0结束)作为mytable t中的Post_项目,其中date='6/1/2009'按位置分组A类-1针对您在清晰问题写作系的教育(否则可能是括号-您的第一个总和仅在结尾处关闭,在其内部您发出列别名,这表明您之前打算关闭它)是否确实需要
ELSE NULL
?我相信
CASE
有默认值
ELSE NULL