我有一个表的会议。每届会议上已经"session_start_time"和"session_end_time".该会议虽然是打开,结束时间是空的。我想取名单的会议,以通过下述逻辑:

  1. 如果本届会议是开放的(没有结束的时间),以便通过开始时间。
  2. 如果本届会议是封闭的,以便通过结束时间。

是这样的:

 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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top