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)
我怎样才能解决这个问题?
做一个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)