按 Month/Year 顺序显示查询结果

Show Query Results in Month/Year Order

我有一个销售查询,它显示了销售的月份和年份(字段名称是 salemonth 和 saleyear)。例如 return-set 将是

January 2014
February 2014
March 2014
December 2014
January 2015

现在显然我不能在我的直接查询中那样设置它,就好像我尝试按 salemonth ASC 订购它会显示十二月、二月、一月、一月、三月。或者即使我按年 ASC 订购,它仍然不会显示在实际的日历月订单中。如何排序此结果集以按实际日历的顺序显示?

需要注意的是,该月(例如 11 月)的销售额可能为 0,我仍希望在查询中显示此 month/year,但显示的是 0。这可以实现吗?

一个快速的想法和解决方案(不是最漂亮的解决方案):

SELECT *, CAST(([Month] + ' 1,' + [Year]) AS Datetime) AS OrderDate FROM [TABLE] ORDER BY OrderDate

..或者如果您希望隐藏排序列:

SELECT * FROM [TABLE] ORDER BY CAST(([Month] + ' 1,' + [Year]) AS Datetime)

这是假设值存储为某种类型的 varchar/string,否则您显然需要多转换一些位。