微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

过去 12 个月的 MS Access SQL 重新排序日期

如何解决过去 12 个月的 MS Access SQL 重新排序日期

我正在尝试正确设置查询格式,以使 Access 365 图表能够正常工作(我知道,我知道),用于跟踪 12 个月的图表。 IE。如果我在 6 月运行此查询,我希望 6 月是最后一个数据点(第 12 个月),并按顺序向后返回到前一个 7 月(第 1 个月)。我在如何将这个逻辑构建到查询中陷入困境,因为顺序是不变的,但相对数量会发生变化。我有

FROM (
SELECT "Jan" as Mo,Month(DateAdd("m",1,Date())) AS MoN,SUM(IIF(MonthNumOpen = 1,0)) AS             SalesOpened,SUM(IIF(MonthNumClose = 1,0)) AS Sales,Month(Date()) as Today1,Sales - SalesOpened as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Feb",2,Date())),SUM(IIF(MonthNumOpen = 2,0)) AS SalesOpened,SUM(IIF(MonthNumClose = 2,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Mar",3,SUM(IIF(MonthNumOpen = 3,SUM(IIF(MonthNumClose = 3,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Apr",4,SUM(IIF(MonthNumOpen = 4,SUM(IIF(MonthNumClose = 4,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "May",5,SUM(IIF(MonthNumOpen = 5,SUM(IIF(MonthNumClose = 5,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Jun",6,SUM(IIF(MonthNumOpen = 6,SUM(IIF(MonthNumClose = 6,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Jul",7,SUM(IIF(MonthNumOpen = 7,SUM(IIF(MonthNumClose = 7,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Aug",8,SUM(IIF(MonthNumOpen = 8,SUM(IIF(MonthNumClose = 8,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Sep",9,SUM(IIF(MonthNumOpen = 9,SUM(IIF(MonthNumClose = 9,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Oct",10,SUM(IIF(MonthNumOpen = 10,SUM(IIF(MonthNumClose = 10,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Nov",11,SUM(IIF(MonthNumOpen = 11,SUM(IIF(MonthNumClose = 11,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
UNION SELECT "Dec",12,SUM(IIF(MonthNumOpen = 12,SUM(IIF(MonthNumClose = 12,Sales - SalesOpened  as SalesDelta FROM Trailing12MonthData_Trial1
ORDER BY MoN
)  AS subquery
ORDER BY IIF(Month(Date()) = 11,Mo ="Jan",IIF(Month(Date()) = 10,Mo="Feb",IIF(Month(Date()) = 9,Mo="Mar",IIF(Month(Date()) = 8,Mo="Apr",IIF(Month(Date()) = 7,Mo="May",IIF(Month(Date()) = 6,Mo="Jun",IIF(Month(Date()) = 5,Mo="Jul",IIF(Month(Date()) = 4,Mo="Aug",IIF(Month(Date()) = 3,Mo="Sep",IIF(Month(Date()) = 2,Mo="Oct",IIF(Month(Date()) = 1,Mo="Nov",Mo="Dec"))))))))))),MoN;

非常感谢您的帮助。

解决方法

使用模数来计算每个月的周期。这里六月是当前月份:

For M = 1 to 12 : ? "Period: " & M,"Month: " & (Month(Date) - 1 + M) Mod 12 + 1 : Next
Period: 1     Month: 7
Period: 2     Month: 8
Period: 3     Month: 9
Period: 4     Month: 10
Period: 5     Month: 11
Period: 6     Month: 12
Period: 7     Month: 1
Period: 8     Month: 2
Period: 9     Month: 3
Period: 10    Month: 4
Period: 11    Month: 5
Period: 12    Month: 6

那么你可能可以大大减少这个查询。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。