下面是我写的用于填充年月的sql查询,但它会随机生成。我希望它像Jan-15,feb -15 ........ dec-15,jan-16 ............ dec-16 ....
SELECT
CASE WHEN dbo.X_HIST_VASCULAR.MONTH = 'January' then 'Dec ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2001)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'February' then 'Jan ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'March' then 'Feb ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'April' then 'Mar ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'May' then 'Apr ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'June' then 'May ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'July' then 'June ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'August' then 'July ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'September' then 'Aug ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'October' then 'Sep ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'November' then 'Oct ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
WHEN dbo.X_HIST_VASCULAR.MONTH = 'December' then 'Nov ' + convert(char(2),dbo.X_HIST_VASCULAR.YEAR-2000)
END
FROM
dbo.X_HIST_VASCULAR
因此。如果我查询月 从x_hist_vascular中选择不同的月份 这是我得到的结果 月 二月 六月 八月 四月 可以 十二月 一月 九月 十月 七月 十一月 三月
如果我执行Asc或Desc,则会抛出alpha顺序。就像Asc一样,它首先显示4月,而Desc则显示9月。我希望以日历格式显示月份。
答案 0 :(得分:1)
如果没有列出具有适当数据类型的列,我怀疑,您可以在查询末尾添加以下内容,以便按每月的数值排序:
ORDER BY
CASE
WHEN dbo.X_HIST_VASCULAR.MONTH = 'January' then 12
WHEN dbo.X_HIST_VASCULAR.MONTH = 'February' then 1
...
WHEN dbo.X_HIST_VASCULAR.MONTH = 'November' then 10
WHEN dbo.X_HIST_VASCULAR.MONTH = 'December' then 11
END
请注意,您的查询中的月份减去了一个('January' then 'Dec '
等)。我也是这样做的,相信这是故意的。如果这是一个错误,你必须在两个地方纠正它。
最好的是,修改设计并仅使用具有适当日期/日期时间数据类型的列。这会让事情变得容易多了。