SQL 列出所有公寓的实际所有者

use*_*006 2 sql progress-db openedge

我正在尝试使用查询列出实际所有者的所有公寓。

我的公寓桌子看起来像这样:

building | apartmentNbr | owner |      start |        end
      b1 |           a1 |    o1 | 2009-08-13 | 2010-08-13
      b1 |           a1 |    o2 | 2010-08-14 | 2019-01-01
      b1 |           a2 |    o3 | 2009-01-03 | 2010-01-03
      b1 |           a2 |    o4 | 2010-01-04 | 2010-08-13
      b1 |           a2 |    o5 | 2010-08-14 | 9999-12-31
      b1 |           a3 |    o6 | 2010-08-14 | 2019-12-31
      b1 |           a3 |    o7 | 2020-02-14 | 9999-12-31
      b2 |           b1 |    o8 | 2012-08-14 | 9999-12-31
...
Run Code Online (Sandbox Code Playgroud)

随着我的查询

SELECT *
FROM Appartments
WHERE CURDATE() BETWEEN startDate AND endDate
Run Code Online (Sandbox Code Playgroud)

我只有有人住的公寓,但我也想有这样的自由:

building | apartmentNbr | owner
      b1 |           a1 |  null
      b1 |           a2 |    o5
      b1 |           a3 |  null
      b2 |           b1 |    o8
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

jar*_*rlh 5

做一个GROUP BY。使用case表达式获取当前所有者(或 null)。

SELECT building, apartmentNbr,
       max(case when CURDATE() BETWEEN startDate AND endDate then owner end)
FROM Appartments
GROUP BY building, apartmentNbr
Run Code Online (Sandbox Code Playgroud)