orderby排序问题

image.png

image.png

查出来的数据,2019年当月排序正常,2020年排序出现从每日31号 降序排列了这是什么地方出问题了

FineReport aafighting 发布于 2020-7-16 13:33 (编辑于 2020-7-16 13:51)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
ixx2020Lv5见习互助
发布于2020-7-16 14:37(编辑于 2020-7-16 14:40)

原因式由于在字符串排序的时候是逐一从左到右进行比较的,比如说01 ,1,12,009,那么从小到大排序后就是009,01,1,12  

建议您把day 转换为数字格式,然后再看一下。

例如:

  select * from (select 年,月,convert(int,substr(day,length(day)-1,length(day)))  day from 表名)A order by  年,月,A.日

  • aafighting aafighting(提问者) 转换格式是对! cast(a.day as int )as day 然后使用转换后的day 进行排序。
    2020-07-16 15:29 
最佳回答
0
誓言无悔Lv6初级互助
发布于2020-7-16 13:36(编辑于 2020-7-16 13:45)

order by 后面少了 day

  • aafighting aafighting(提问者) WITH temp1 AS( SELECT a.[year], a.[day], a.[values], (CASE WHEN a.[month]<10THEN \'0\'+a.month ELSE a.[month] END) as [month] FROM year_month_1 a ), temp2 AS( SELECT DATENAME(mm,GETDATE()) as month_1 ) SELECT (a.[year]+\'年当月\') as [year], a.[month], a.[day], a.[values] FROM temp1 a,temp2 b WHERE a.[month]=b.month_1 ORDER BY a.year,a.[month]
    2020-07-16 13:37 
  • 誓言无悔 誓言无悔 回复 aafighting(提问者) day 呢?
    2020-07-16 13:44 
  • aafighting aafighting(提问者) 回复 誓言无悔 把 日去掉 order by 加day 依旧排序不对
    2020-07-16 13:52 
最佳回答
0
豆豆小可爱Lv5中级互助
发布于2020-7-16 13:42

你order by 没把day加上?

  • aafighting aafighting(提问者) 加上更乱了,
    2020-07-16 13:45 
  • 豆豆小可爱 豆豆小可爱 回复 aafighting(提问者) 是不是day是字符串格式,然后排序乱了,你把day转化成数字格式试一下,用order by day+0
    2020-07-16 14:13 
  • 4关注人数
  • 812浏览人数
  • 最后回答于:2020-7-16 14:40
    请选择关闭问题的原因
    确定 取消
    返回顶部