在Case语句中用Oracle计算的简单查询

时间:2014-05-21 17:33:05

标签: oracle case

我有一个查询计算两个日期之间的分钟差异。我遇到的问题是查询需要根据经过的分钟数返回不同的结果。我想在不重新计算每个案例的会议记录的情况下这样做。如果可能的话,我想在一个简单的查询中这样做。

实施例。我想删除(d2-d1)* 1440并保存到变量中,以便在查询中再次使用它。

select a, b, c,
(case
when (d2-d1)*1440 < 10 then 'Less than 10'
when (d2-d1)*1440 < 500 then 'Less than 500'
else 'More than 500'
end
)
from my_table

2 个答案:

答案 0 :(得分:0)

使用内联查询有助于获得所需的结果

select a, b, c,
(case
when ddiff < 10 then 'Less than 10'
when ddiff < 500 then 'Less than 500'
else 'More than 500'
end
)
from (select a,b,c, (d2-d1) * 1440  ddiff  from my_table) X

答案 1 :(得分:0)

使用子查询。

select a, b, c,
(case
when min_diff < 10 then 'Less than 10'
when min_diff < 500 then 'Less than 500'
else 'More than 500'
end
)
from ( 
    select a,b,c, (d2-d1)*1440 AS min_diff from my_table
)