题
我有一个表的会议。每届会议上已经"session_start_time"和"session_end_time".该会议虽然是打开,结束时间是空的。我想取名单的会议,以通过下述逻辑:
- 如果本届会议是开放的(没有结束的时间),以便通过开始时间。
- 如果本届会议是封闭的,以便通过结束时间。
是这样的:
ORDER BY (session_end_time == null) ? session_start_time : session_end_time
我访问用户使用和JPQL于查询和使用休眠的执行。你有什么建议?
注意到:我宁可不加入情况的选择,而是使它保持干净,使我获得一个名单的会话,而不附加不必要的领域。
解决方案
为了通过nvl(session_end_time,session_start_time)
nvl是一个Oracle的功能。我确定那里有职能像其他DBMS
找到这个人对于休眠:nvl在休眠: 如何模拟NVL在非常
为了通过: https://forum.hibernate.org/viewtopic.php?f=25&t=997220&start=0
其他提示
做
ORDER BY CASE
WHEN session_end_time IS NULL THEN session_start_time
ELSE session_end_time
END
在你的工作DBMS?这并不添加一个领域。
否则你可以计算出它里面嵌套的查询,但不包括它在最后 SELECT
条款:
SELECT field1, field2 FROM (
SELECT field1, field2, CASE WHEN session_end_time... END AS dummyfield
) Q
ORDER BY Q.dummyfield
不隶属于 StackOverflow