用sql语句怎么把同一表按照列data1,data2,data3的最小的那个按时间从小到大排序?

sheyu8 2003-11-20 12:52:14

a
ids data1 data2 data3
1 1010-1-1 1009-1-1
2 1012-1-1 2005-1-1
3 1014-1-1 1020-1-1 1000-1-1
4 1013-1-1 1003-1-1

显示结果应该为按照data1,data2,data3的最小的那个按时间从小到大排序,显示如下:
ids data1 data2 data3
3 1014-1-1 1020-1-1 1000-1-1
4 1013-1-1 1003-1-1
1 1010-1-1 1009-1-1
2 1012-1-1 2005-1-1
...全文
438 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolfpzp 2003-11-20
  • 打赏
  • 举报
回复
select A.*
FROM A LEFT JOIN (select A.ID, sort_data =
case when data1<= data2 then
case when data1 <= data3 then data1 else data3 end
else
case when data2 <= data3 then data2 else data3 end
end
from A ) B ON A.ID = B.ID
order by B.sort_data
realgz 2003-11-20
  • 打赏
  • 举报
回复
来点长的,不过效率应该可以
select a.*
from a, (select ids,min(data) from (select ids,data1 data from a a3 data union all select ids,data2 data from a a4 union all select ids,data3 data from a a5) ax group by ids) a2
where a.ids=a2.ids
order by a2.data
wolfpzp 2003-11-20
  • 打赏
  • 举报
回复
select a.*, sort_data =
case when data1<= data2 then
case when data1 <= data3 then data1 else data3 end
else
case when data2 <= data3 then data2 else data3 end
end
from a order by sort_data
sunsunup 2003-11-20
  • 打赏
  • 举报
回复
select a.*, sort_data =
case when data1> data2 then
case when data1 > data3 then data1 else data1 end
else
case when data2 > data3 then data2 else data3 end
end
from a order by sort_data
shuiniu 2003-11-20
  • 打赏
  • 举报
回复
select * from a
order by data1 desc
--------------------------
????

34,623

社区成员

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

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