我已将会计月份存储为表中的Nvarchar列,并希望根据会计月份对该表进行排序。
创建表示例(
身份证
,最大值
);
例:表包含此数据

Id   FiscalMonth
-----------------
1     FY15-Oct
2     FY15-Sep
3     FY15-Jul
4     FY15-Aug

现在,如果我按fiscalmon列顺序对这个表进行排序,结果将是:
在第一个月的样品订单中选择*;
结果:
Id   FiscalMonth
-----------------
4     FY15-Aug
3     FY15-Jul
1     FY15-Oct
2     FY15-Sep

但我希望结果是
预期产量:
Id   FiscalMonth
-----------------
3     FY15-Jul
4     FY15-Aug
2     FY15-Sep
1     FY15-Oct

有人能帮助我在不改变表模式的情况下解决这个问题吗?

最佳答案

要按不同年份和月份进行排序,MS SQL中的order by应按以下方式工作:

SELECT [Id],[FiscalMonth]
From Sample
order by convert(date,Substring([FiscalMonth],6,3)+ ' 01 ' + Substring([FiscalMonth],3,2),103)

这假设FiscalMonth列的格式始终相同。

07-27 13:46