首页 > 解决方案 > 如何按非字母顺序获取月份名称

问题描述

请找到下面的小提琴有一个表格,我正在将行转换为列

https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=7c8223ca9a517e4a959f0ecfb2c0e39d

A   B   C   December    February    January
100  ABC OL    100        290         200
100  DEF OL    260        360         300
200  ABC OL    500        550         600
200  DEF OL    570        680         600

但我没有像 12 月、1 月和 2 月那样按顺序排列月份,怎么能做到这一点?

标签: sqlsql-serversql-server-2008sql-order-by

解决方案


您可以将月份名称转换为日期和顺序:

set @col_list = (select quotename([D])+','
                 from t1
                 group by d
                 order by cast(d + ' 01, 2000' as date)
                 for xml path('')
                );

是 db<>fiddle。


推荐阅读