没有临时表的滚动时间框架
Rolling time frame without temp tables
我需要在滚动的 12 个月时间范围内提取销售额总和,但我的 DBA 没有给我制作临时表的权利,所以我不能像在网上查看时在几篇帖子中看到的那样使用它们。我发现的大多数也是指使用 SQL 2012。我必须访问的一些服务器是 SQL 2000,有些是 SQL 2012,我需要在两者上进行这项工作。这是一些示例代码:
Select Rep
,Rep_ID
,Cast(Case when Sales_Date between '2/1/2014' and '1/31/2015' then Sum(Sales) else 0 end as decimal(18,2)) as "Sales Amount"
From dbo.Sales
那么您要获取每个代表在过去 12 个月内的销售额?
SELECT Rep
,Rep_ID
,"Sales Amount" = Sum(Sales)
FROM dbo.Sales
WHERE Sales_Date
BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -12, 0)
AND DATEADD(SECOND, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
GROUP BY Rep, Rep_ID
编辑: 小错误修复,日期之间现在是 2014-02-01 00:00:00.000 和 2015-01-31 23:59:59.000
我需要在滚动的 12 个月时间范围内提取销售额总和,但我的 DBA 没有给我制作临时表的权利,所以我不能像在网上查看时在几篇帖子中看到的那样使用它们。我发现的大多数也是指使用 SQL 2012。我必须访问的一些服务器是 SQL 2000,有些是 SQL 2012,我需要在两者上进行这项工作。这是一些示例代码:
Select Rep
,Rep_ID
,Cast(Case when Sales_Date between '2/1/2014' and '1/31/2015' then Sum(Sales) else 0 end as decimal(18,2)) as "Sales Amount"
From dbo.Sales
那么您要获取每个代表在过去 12 个月内的销售额?
SELECT Rep
,Rep_ID
,"Sales Amount" = Sum(Sales)
FROM dbo.Sales
WHERE Sales_Date
BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -12, 0)
AND DATEADD(SECOND, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0))
GROUP BY Rep, Rep_ID
编辑: 小错误修复,日期之间现在是 2014-02-01 00:00:00.000 和 2015-01-31 23:59:59.000