我对SQL Server的问题很小。
我有一个包含这样的样本数据的表:
id | month | stat | count
---------------------------------
1 | 1 | admit | 7
2 | 8 | admit | 47
1 | 7 | admit | 28
2 | 9 | admit | 11
3 | 12 | dischr | 4
4 | 10 | openc | 5
1 | 11 | admit | 1
2 | 6 | admit | 5
2 | 4 | admit | 8
1 | 3 | dischr | 10
2 | 2 | admit | 30
3 | 5 | dischr | 20
1 | 8 | admit | 13
3 | 8 | dischr | 1
4 | 9 | admit | 30
2 | 10 | admit | 20
3 | 10 | deschr | 20
基于这个,当月= 1然后是1月和当月= 2然后2月一直到12,基于这个条件,我得到如下的输出。
Month |id |Admit |Dischr |OpenC
August |1 |13 |NULL |NULL
January |1 |7 |NULL |NULL
July |1 |28 |NULL |NULL
March |1 |NULL |10 |NULL
November|1 |1 |NULL |NULL
April |2 |8 |NULL |NULL
August |2 |47 |NULL |NULL
February|2 |30 |NULL |NULL
June |2 |5 |NULL |NULL
October 2 |20 |NULL |NULL
September|2 |11 |NULL |NULL
August |3 |NULL |1 |NULL
December|3 |NULL |4 |NULL
May |3 |NULL |20 |NULL
October |3 |NULL |NULL |NULL
October |4 |NULL |NULL |5
September|4 |30 |NULL |NULL
但我希望输出像月份正确的顺序和输出如下所示
Month |id |Admit |Dischr |OpenC
January |1 |7 |NULL |NULL
February|2 |30 |NULL |NULL
March |1 |NULL |10 |NULL
April |2 |8 |NULL |NULL
May |3 |NULL |20 |NULL
June |2 |5 |NULL |NULL
July |1 |28 |NULL |NULL
August |1 |13 |NULL |NULL
August |2 |47 |NULL |NULL
August |3 |NULL |1 |NULL
September|2 |11 |NULL |NULL
September|4 |30 |NULL |NULL
October |2 |20 |NULL |NULL
October |3 |NULL |NULL |NULL
October |4 |NULL |NULL |5
November|1 |1 |NULL |NULL
December|3 |NULL |4 |NULL
请告诉我如何在SQL Server中解决此问题。
答案 0 :(得分:3)
您需要convert
month
列date
并order by
与ID
SELECT [Month],
id,
Admit,
Dischr,
OpenC
FROM yourTable
ORDER BY Cast([Month] + '01 2010' AS DATE),Id
或
order by DATEPART(MM,[Month]+ ' 01 2010'),Id
注意: '1 2010'
广告素材只是convert
month
varchar列到date
的静态值
答案 1 :(得分:0)
在查询中添加order by
子句,以确保根据您的要求订购数据。像这样的东西
SELECT ....
FROM yourTable
ORDER BY Month, Id