【问题标题】:SQL list all apartments with actual ownerSQL 列出所有拥有实际所有者的公寓
【发布时间】:2020-05-12 17:45:57
【问题描述】:

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

我的公寓桌子是这样的:

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
...

根据我的查询

SELECT *
FROM Appartments
WHERE CURDATE() BETWEEN startDate AND endDate

我只有被占用的公寓,但我也想像这样免费:

building | apartmentNbr | owner
      b1 |           a1 |  null
      b1 |           a2 |    o5
      b1 |           a3 |  null
      b2 |           b1 |    o8

我该如何解决这个问题?

【问题讨论】:

  • 请用您正在使用的数据库标记您的问题。
  • 你在使用 MySQL 吗?
  • 我正在使用 ODBC 连接到 Progress 数据库

标签: sql openedge progress-db


【解决方案1】:

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

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

【讨论】:

  • 如果我想获取日期,我必须添加更多 CASE 吗?
  • 是的,你可以。或者进行自我加入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
相关资源
最近更新 更多