SQL查询问题

[复制链接]
查看11 | 回复5 | 2009-8-16 00:44:31 | 显示全部楼层 |阅读模式
1.无法将varchar 值 '2009年6月' 转换成数据类型 int;2.用类似'2009年6月'这样的值来排序,得不到按年月的正确排序;修改建议:将字段yd拆分为两列,用来分别记录年份和月份(只包含数字,不含中文),这样最后排序时就可以使用这两列来排序 修改后的代码如下:(未测试)SELECT convert(varchar,a.y)+'年'+convert(varchar,a.m)+'月' yd,b.SectionMC,ZJE1,C.SectionMC,ZJE2 from (select distinct YEAR(OPERDATE) y,MONTH(OPERDATE) m from VIEW_P...
回复

使用道具 举报

千问 | 2009-8-16 00:44:31 | 显示全部楼层
最后的 order by cast(a.yd as int) 失败而且你的convert(int,substring(a.yd,6,1)) 并不是取月,如果是12月,你取得的是1因为,你的a.yd 是年月的形式,所以不能转为int 没有你的数据库所在只能在你的基础上作改动,SELECTyd ,ye,b.SectionMC,ZJE1...
回复

使用道具 举报

千问 | 2009-8-16 00:44:31 | 显示全部楼层
试试下面这个:SELECTdistinct yd ,b.SectionMC,ZJE1,C.SectionMC,ZJE2 from ( select distinct(convert(varchar,YEAR(OPERDATE))+'年'+convert(varchar,MONTH(OPERDATE))+'月' ) as yd from VIE...
回复

使用道具 举报

千问 | 2009-8-16 00:44:31 | 显示全部楼层
你的OPERDATE字段不是日期型的吧...
回复

使用道具 举报

千问 | 2009-8-16 00:44:31 | 显示全部楼层
要去掉重复的数据,可以用distinctselect distinct yd ……...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行