各位高手,求一个sql语句

骑猪听涛 2018-05-11 10:48:50
一个记录时间的表
结束分钟
1,60
2,1440

现在给定一个分钟
在60分钟内,选第一条
在60分以上..1440内 选第二条
在1440以上,选第二条

用一条语句,只返回一条结果,sql2000的

不胜感谢!


...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
骑猪听涛 2018-05-11
  • 打赏
  • 举报
回复
谢了,按你的写法,解决了。。。
骑猪听涛 2018-05-11
  • 打赏
  • 举报
回复
不好意思,我忘记了还有一个条件.就是那个结束分钟不是固定2个的,有可能是3个,4个...都有可能 规则就是:按照那个结束分钟区间找,数值大于最后那个分钟的,就选最后那个分钟 如: 结束分钟 1,30 2,60 3,1440 数值0..30 就是1 31-60 就是2 61- 1440 就是3 1441....以上也是3 注意:这个区间不是固定的
二月十六 2018-05-11
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
    drop table #T
Go
Create table #T([Id] int,[TimeMinutes] int)
Insert #T
select 1,30 union all
select 2,60 union all
select 3,1440
Go
--测试数据结束
DECLARE @minute INT = 100;
SELECT *
FROM #T
WHERE Id = CASE
               WHEN
               (
                   SELECT TOP 1 Id FROM #T WHERE @minute < TimeMinutes ORDER BY TimeMinutes
               ) IS NOT NULL THEN
               (
                   SELECT TOP 1 Id FROM #T WHERE @minute < TimeMinutes ORDER BY TimeMinutes
               )
               ELSE
           (
               SELECT MAX(Id) FROM #T
           )
           END;
二月十六 2018-05-11
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([Id] int,[TimeMinutes] int)
Insert #T
select 1,60 union all
select 2,1440
Go
--测试数据结束
DECLARE @minute INT=100
SELECT *
FROM #T
WHERE Id = CASE
WHEN @minute <= 60 THEN
1
ELSE
2
END;



22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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