日期:2014-05-20  浏览次数:20963 次

数据库排序问题,求救
table one
  字段:id,number(int)
table two
  字段:id,time(datetime),username,password

sql语句:
SELECT CONVERT(VARCHAR(4),YEAR(YEAR_MONTH)) + '-' + CONVERT(VARCHAR(4),MONTH(YEAR_MONTH)) TIME INTO #L1
  FROM
  (
  SELECT DATEADD(MONTH,-NUMBER,GETDATE()) YEAR_MONTH FROM TABLEONE WHERE NUMBER < 12
  ) #S 

SELECT CONVERT(VARCHAR(4),YEAR(TIME)) + '-' + CONVERT(VARCHAR(4),MONTH(TIME)) TIME,USERNAME,PASSWORD INTO #A FROM TABLETWO

SELECT L.TIME,A.USERNAME, A.PASSWORD FROM #L1 L,#A A WHERE L.TIME *= A.TIME ORDER BY L.TIME DESC

运行结果:
TIME
  2007-5
2007-6
2007-7
2007-8
2007-9
2007-10
2007-11
2007-12
2008-1
2008-2
2008-3
2008-4
怎么没有按时间进行倒序排列 ,高手帮忙!!!!!!

------解决方案--------------------
自己可以写个函数啊,读取时间后,划分成年月两个模块
进行比较就可以了,呵呵
------解决方案--------------------
你的排序没有问题啊!

你看看,年月的顺序很正确!!
------解决方案--------------------
不是没有 倒序排列是你对时间大小的理解反了.
你认为 2007-6 和 2008-4 哪个时间大一些.
肯定是 2007-6 大一些啊。所以 是按照 时间 降序排的啊。

------解决方案--------------------
这样吗?
2008-4
2008-3 
2008-2
SQL code
SELECT L.TIME,A.USERNAME, A.PASSWORD FROM #L1 L,#A A WHERE L.TIME *= A.TIME ORDER BY L.TIME