34 个解决方案
#1
select * from yourtable order by Date,No
#2
......Order By 日期,号码.....
#3
我试过了,不行。
#4
order by的默认值是升序,那按照楼上两位的意见就可以了
#5
我猜想你的方案是希望把相同月份的日期先集中起来,然后按日期升序排;然后在把所有的月份排起来是吧,如果你要这样做的,加一句 group by 号码试试
#6
这样的写法,排序结果是这样的:当日期相同时,再比较号码。所以日期是从小到大了,但号码没按顺序排
#7
同意楼上。
#8
select * from yourtable order by Date,cast(NO as int)
#9
(NO as int)这个参数是什么意思?
#10
强制类型转换,你先试试行不行,不行的话请你放一些范例数据上来让我测试一下。
#11
这个字段本来就是INT的
#12
关注!!
#13
group by 日期 order by 号码 ASC
#14
group by 日期 order by 号码 ASC
#15
我多此碰到这样的问题 ,问过但都没有解决
如果一答案了,能转告一声么?
wenzmm
如果一答案了,能转告一声么?
wenzmm
#16
wenzm@sina.com you
#17
这个方法不行
#18
不明白为什么:
select * from yourtable order by Date,No
不能用!
我想你的要求应该用上面这句就可以的!
你还是将你的一些例子数据送一些上来吧!
如:
// Date No OtherField
// 2001-01-01 2 1
// 2001-04-01 1 2
// 2001-02-01 2 3
// 2001-02-01 1 4
// 2001-03-01 1 5
// 2001-01-01 1 6
用上面的SQL语句及数据其结果应该为:
// 2001-01-01 1 6
// 2001-01-01 2 1
// 2001-02-01 1 4
// 2001-02-01 2 3
// 2001-03-01 1 5
// 2001-04-01 1 2
你要求的结果是这样的吗?
select * from yourtable order by Date,No
不能用!
我想你的要求应该用上面这句就可以的!
你还是将你的一些例子数据送一些上来吧!
如:
// Date No OtherField
// 2001-01-01 2 1
// 2001-04-01 1 2
// 2001-02-01 2 3
// 2001-02-01 1 4
// 2001-03-01 1 5
// 2001-01-01 1 6
用上面的SQL语句及数据其结果应该为:
// 2001-01-01 1 6
// 2001-01-01 2 1
// 2001-02-01 1 4
// 2001-02-01 2 3
// 2001-03-01 1 5
// 2001-04-01 1 2
你要求的结果是这样的吗?
#19
为什么N个空格只剩下一个了?奇怪,CSDN怎么搞的!
#20
对,我要的就是这个结果
#21
对,就是这个结果
#22
我测试过我的代码一点问题都没有,你是不是有什么其他地方没说明呀?
#23
我要的是liang_z(千山一刀之忍者神龟) 提供的结果。你看了吗?
#24
对了,在这个结果中,如果有一条日期为:2001-02-02 号码为 3的。那结果就不是我想要的,号码为3的会排在 2001-02-01 1 4 之后。而我是想每个月中号码都为最小开始。
#25
我给个例子吧:
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 13
2002-01-03 8
排序后应为:
2002-01-03 8
2002-01-06 13
2002-02-02 8
2002-02-03 13
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 13
2002-01-03 8
排序后应为:
2002-01-03 8
2002-01-06 13
2002-02-02 8
2002-02-03 13
#26
select * from yourtable order by 1,2
#27
例子错了,应为:
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 8
2002-01-03 13
排序后应为:
2002-01-06 8
2002-01-03 13
2002-02-02 8
2002-02-03 13
同一个月内号码从小到大排
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 8
2002-01-03 13
排序后应为:
2002-01-06 8
2002-01-03 13
2002-02-02 8
2002-02-03 13
同一个月内号码从小到大排
#28
你使用什么数据库?我在MS SQL SERVER 中完全没问题
#29
SELECT * from yourtable order by date desc,no asc
#30
日期不能倒序,我的排序规则是这样的:首先应按年+月正序排序,在每个月中以号码从小到大排序。所以这样排序的结果在日期中年和月肯定从小到大排序。但日期就不一定了。
#31
你的意思是date仅按月份排从小到大,号码也是从小到大
select * from yourtable order by left(date,7),no
在ms sql server 2000 通过
select * from yourtable order by left(date,7),no
在ms sql server 2000 通过
#32
我也测试过
在sql server 2000中完全没有问题的呀
在sql server 2000中完全没有问题的呀
#33
select * from ... order by convert(char(6),date,112),No
#34
这个我也试过了,没问题!
select * from ... order by convert(char(6),date,112),No
先对日期的YYYYMM部分排序,在些基础上再对No进行排序!
select * from ... order by convert(char(6),date,112),No
先对日期的YYYYMM部分排序,在些基础上再对No进行排序!
#1
select * from yourtable order by Date,No
#2
......Order By 日期,号码.....
#3
我试过了,不行。
#4
order by的默认值是升序,那按照楼上两位的意见就可以了
#5
我猜想你的方案是希望把相同月份的日期先集中起来,然后按日期升序排;然后在把所有的月份排起来是吧,如果你要这样做的,加一句 group by 号码试试
#6
这样的写法,排序结果是这样的:当日期相同时,再比较号码。所以日期是从小到大了,但号码没按顺序排
#7
同意楼上。
#8
select * from yourtable order by Date,cast(NO as int)
#9
(NO as int)这个参数是什么意思?
#10
强制类型转换,你先试试行不行,不行的话请你放一些范例数据上来让我测试一下。
#11
这个字段本来就是INT的
#12
关注!!
#13
group by 日期 order by 号码 ASC
#14
group by 日期 order by 号码 ASC
#15
我多此碰到这样的问题 ,问过但都没有解决
如果一答案了,能转告一声么?
wenzmm
如果一答案了,能转告一声么?
wenzmm
#16
wenzm@sina.com you
#17
这个方法不行
#18
不明白为什么:
select * from yourtable order by Date,No
不能用!
我想你的要求应该用上面这句就可以的!
你还是将你的一些例子数据送一些上来吧!
如:
// Date No OtherField
// 2001-01-01 2 1
// 2001-04-01 1 2
// 2001-02-01 2 3
// 2001-02-01 1 4
// 2001-03-01 1 5
// 2001-01-01 1 6
用上面的SQL语句及数据其结果应该为:
// 2001-01-01 1 6
// 2001-01-01 2 1
// 2001-02-01 1 4
// 2001-02-01 2 3
// 2001-03-01 1 5
// 2001-04-01 1 2
你要求的结果是这样的吗?
select * from yourtable order by Date,No
不能用!
我想你的要求应该用上面这句就可以的!
你还是将你的一些例子数据送一些上来吧!
如:
// Date No OtherField
// 2001-01-01 2 1
// 2001-04-01 1 2
// 2001-02-01 2 3
// 2001-02-01 1 4
// 2001-03-01 1 5
// 2001-01-01 1 6
用上面的SQL语句及数据其结果应该为:
// 2001-01-01 1 6
// 2001-01-01 2 1
// 2001-02-01 1 4
// 2001-02-01 2 3
// 2001-03-01 1 5
// 2001-04-01 1 2
你要求的结果是这样的吗?
#19
为什么N个空格只剩下一个了?奇怪,CSDN怎么搞的!
#20
对,我要的就是这个结果
#21
对,就是这个结果
#22
我测试过我的代码一点问题都没有,你是不是有什么其他地方没说明呀?
#23
我要的是liang_z(千山一刀之忍者神龟) 提供的结果。你看了吗?
#24
对了,在这个结果中,如果有一条日期为:2001-02-02 号码为 3的。那结果就不是我想要的,号码为3的会排在 2001-02-01 1 4 之后。而我是想每个月中号码都为最小开始。
#25
我给个例子吧:
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 13
2002-01-03 8
排序后应为:
2002-01-03 8
2002-01-06 13
2002-02-02 8
2002-02-03 13
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 13
2002-01-03 8
排序后应为:
2002-01-03 8
2002-01-06 13
2002-02-02 8
2002-02-03 13
#26
select * from yourtable order by 1,2
#27
例子错了,应为:
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 8
2002-01-03 13
排序后应为:
2002-01-06 8
2002-01-03 13
2002-02-02 8
2002-02-03 13
同一个月内号码从小到大排
排序前:
2002-02-02 8
2002-02-03 13
2002-01-06 8
2002-01-03 13
排序后应为:
2002-01-06 8
2002-01-03 13
2002-02-02 8
2002-02-03 13
同一个月内号码从小到大排
#28
你使用什么数据库?我在MS SQL SERVER 中完全没问题
#29
SELECT * from yourtable order by date desc,no asc
#30
日期不能倒序,我的排序规则是这样的:首先应按年+月正序排序,在每个月中以号码从小到大排序。所以这样排序的结果在日期中年和月肯定从小到大排序。但日期就不一定了。
#31
你的意思是date仅按月份排从小到大,号码也是从小到大
select * from yourtable order by left(date,7),no
在ms sql server 2000 通过
select * from yourtable order by left(date,7),no
在ms sql server 2000 通过
#32
我也测试过
在sql server 2000中完全没有问题的呀
在sql server 2000中完全没有问题的呀
#33
select * from ... order by convert(char(6),date,112),No
#34
这个我也试过了,没问题!
select * from ... order by convert(char(6),date,112),No
先对日期的YYYYMM部分排序,在些基础上再对No进行排序!
select * from ... order by convert(char(6),date,112),No
先对日期的YYYYMM部分排序,在些基础上再对No进行排序!