时间排序的查询

xianghua 2009-04-15 02:02:26
发布日期 有效日期 状态
2009-4-1 2009-10-1 有效
2009-3-1 2009-3-5 无效
2009-2-28 2009-5-1 有效
2009-2-20 2009-10-1 有效
2009-2-18 2009-2-20 无效

处理成这样:

发布日期 有效日期 状态

2009-4-1 2009-10-1 有效
2009-2-28 2009-5-1 有效
2009-2-20 2009-10-1 有效

2009-3-1 2009-3-5 无效
2009-2-18 2009-2-20 无效

条件:按发布日期排序,但先排有效记录,再排无效记录。


...全文
160 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
usher_gml 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Tomzzu 的回复:]

按状态降序(因为'有'字Ascii为211, '无'字Ascii为206, 无效排序在前, 所以用降序), 发布日期降序
select * from 表名 order by 状态 desc, 发布日期 desc
[/Quote]

因为'有'字Ascii为166, '无'字Ascii为63才对把...
usher_gml 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Tomzzu 的回复:]

按状态降序(因为'有'字Ascii为211, '无'字Ascii为206, 无效排序在前, 所以用降序), 发布日期降序
select * from 表名 order by 状态 desc, 发布日期 desc
[/Quote]

UP
levinstong 2009-04-15
  • 打赏
  • 举报
回复
select * from table3 order by [状态] desc,[发布日期] desc
Tomzzu 2009-04-15
  • 打赏
  • 举报
回复

按状态降序(因为'有'字Ascii为211, '无'字Ascii为206, 无效排序在前, 所以用降序), 发布日期降序
select * from 表名 order by 状态 desc, 发布日期 desc
ws_hgo 2009-04-15
  • 打赏
  • 举报
回复
create table #tb([发布日期] datetime,[有效日期] datetime,[状态] varchar(10))
insert #tb select '2009-4-1','2009-10-1','有效'
insert #tb select '2009-3-1','2009-3-5','无效'
insert #tb select '2009-2-28','2009-5-1','有效'
insert #tb select '2009-2-20','2009-10-1','有效'
insert #tb select '2009-2-18','2009-2-20','无效'
select * from #tb order by 状态 desc,发布日期 desc

发布日期 有效日期 状态
----------------------- ----------------------- ----------
2009-04-01 00:00:00.000 2009-10-01 00:00:00.000 有效
2009-02-28 00:00:00.000 2009-05-01 00:00:00.000 有效
2009-02-20 00:00:00.000 2009-10-01 00:00:00.000 有效
2009-03-01 00:00:00.000 2009-03-05 00:00:00.000 无效
2009-02-18 00:00:00.000 2009-02-20 00:00:00.000 无效

(5 行受影响)
msydd2006 2009-04-15
  • 打赏
  • 举报
回复
一楼的最清楚
長胸為富 2009-04-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 szx1999 的回复:]
SQL code
select * from tb
order by 状态 desc,发布日期 desc


[/Quote]
支持。。
等不到来世 2009-04-15
  • 打赏
  • 举报
回复
select * from tb 
order by 状态 desc,发布日期 desc
x3314 2009-04-15
  • 打赏
  • 举报
回复
SELECT 发布日期 , 有效日期 , 状态
FROM 表
ORDER 状态 ,发布日期 , 有效日期
htl258_Tony 2009-04-15
  • 打赏
  • 举报
回复
if OBJECT_ID('tb') is not null
Drop table tb
create table tb([发布日期] datetime,[有效日期] datetime,[状态] varchar(10))
insert tb select '2009-4-1','2009-10-1','有效'
insert tb select '2009-3-1','2009-3-5','无效'
insert tb select '2009-2-28','2009-5-1','有效'
insert tb select '2009-2-20','2009-10-1','有效'
insert tb select '2009-2-18','2009-2-20','无效'
go
select * from tb order by case when 状态 ='有效' then 0 else 1 end,发布日期 desc
/*
发布日期 有效日期 状态
----------------------- ----------------------- ----------
2009-04-01 00:00:00.000 2009-10-01 00:00:00.000 有效
2009-02-28 00:00:00.000 2009-05-01 00:00:00.000 有效
2009-02-20 00:00:00.000 2009-10-01 00:00:00.000 有效
2009-03-01 00:00:00.000 2009-03-05 00:00:00.000 无效
2009-02-18 00:00:00.000 2009-02-20 00:00:00.000 无效

(5 行受影响)
*/

34,576

社区成员

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

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