关于视图排序

x_bingbing 2010-08-05 03:55:44
创建了一个视图,按照d排序
结果如下

d m1 m2 m3 .. m12
1
10
11
.
.
2
20
21
22
.
.
3

我想要的是从小到大排序,怎么办
create view testjyl19 as select top 99 DATENAME(dd,createtime) d,max(case when Datepart(month,createtime)=1 then resultdata1 else 0 end) m1,max(case when Datepart(month,createtime)=2 then resultdata1 else 0 end) m2,max(case when Datepart(month,createtime)=3 then resultdata1 else 0 end) m3,max(case when Datepart(month,createtime)=4 then resultdata1 else 0 end) m4,max(case when Datepart(month,createtime)=5 then resultdata1 else 0 end) m5,max(case when Datepart(month,createtime)=6 then resultdata1 else 0 end) m6,max(case when Datepart(month,createtime)=7 then resultdata1 else 0 end) m7,max(case when Datepart(month,createtime)=8 then resultdata1 else 0 end) m8,max(case when Datepart(month,createtime)=9 then resultdata1 else 0 end) m9,max(case when Datepart(month,createtime)=10 then resultdata1 else 0 end) m10,max(case when Datepart(month,createtime)=11 then resultdata1 else 0 end) m11,max(case when Datepart(month,createtime)=12 then resultdata1 else 0 end) m12 from commhistorydata where datepart(year,createtime)=2009 and systemid=1 and deviceid in (select min(deviceid) from devicecongfigtable where regionid=1 and systemid=1 and devicetypeid=18) and datawarningstate<>6 and datawarningstate<>0 and resultdata1<>9999.99 group by datename(day,createtime)

视图语句如上
...全文
121 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
解决了,把列d 改为 max(datepart(dd,createtime)) d

再加上 order by d
就ok了,谢谢各位
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 josy 的回复:]
引用 11 楼 x_bingbing 的回复:
引用 8 楼 josy 的回复:
SQL code
select *
from testjyl19
order by cast(d as int)

在视图里面没有必要排序,不过你用了top的话,在最后加order by也是可以的


创建视图成功了,但是打开后显示将varchar 值 d转换为数据类型 int 时 语法出现错误
……
[/Quote]

d是这么来的 DATENAME(dd,createtime) d
应该不是数字吧
obuntu 2010-08-05
  • 打赏
  • 举报
回复
视图排序是没有作用的。
该乱还是会乱。
最好在查询的时候加order by

select * from view order by
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xys_777 的回复:]
引用 4 楼 x_bingbing 的回复:
引用 2 楼 xys_777 的回复:
最后加
order by d
试试


结果还是一样啊


在把第一个字段改改
DATEPART(dd,createtime) d,

datename 返回字符串
datepart 返回整形
[/Quote]
出错了

列 'commhistorydata.CreateTime' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
百年树人 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 x_bingbing 的回复:]
引用 8 楼 josy 的回复:
SQL code
select *
from testjyl19
order by cast(d as int)

在视图里面没有必要排序,不过你用了top的话,在最后加order by也是可以的


创建视图成功了,但是打开后显示将varchar 值 d转换为数据类型 int 时 语法出现错误
[/Quote]

d的值不是数字的?
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 josy 的回复:]
SQL code
select *
from testjyl19
order by cast(d as int)

在视图里面没有必要排序,不过你用了top的话,在最后加order by也是可以的
[/Quote]

创建视图成功了,但是打开后显示将varchar 值 d转换为数据类型 int 时 语法出现错误
永生天地 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 x_bingbing 的回复:]
引用 2 楼 xys_777 的回复:
最后加
order by d
试试


结果还是一样啊
[/Quote]

在把第一个字段改改
DATEPART(dd,createtime) d,

datename 返回字符串
datepart 返回整形
feixianxxx 2010-08-05
  • 打赏
  • 举报
回复
视图出来还能排序么?

视图检索的是个结果集...在视图内部使用Order by没有意义...

可以在外面查询的时候用order by 指定~
百年树人 2010-08-05
  • 打赏
  • 举报
回复
select * 
from testjyl19
order by cast(d as int)

在视图里面没有必要排序,不过你用了top的话,在最后加order by也是可以的
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 josy 的回复:]
SQL code
order by cast(d as int)
[/Quote]

运行不了,“列名 d 无效”
hao1hao2hao3 2010-08-05
  • 打赏
  • 举报
回复
转换成数字就可以了,字符排序肯定会这样的,用Cast函数或者Convert函数都可以。
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 josy 的回复:]
SQL code
order by cast(d as int)
[/Quote]

运行不了,“列名 d 无效”
x_bingbing 2010-08-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xys_777 的回复:]
最后加
order by d
试试
[/Quote]

结果还是一样啊
百年树人 2010-08-05
  • 打赏
  • 举报
回复
order by cast(d as int)
永生天地 2010-08-05
  • 打赏
  • 举报
回复
最后加
order by d
试试
天-笑 2010-08-05
  • 打赏
  • 举报
回复
好乱 ,帮顶,看的懂的继续

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧