【发布时间】:2022-11-15 10:54:03
【问题描述】:
我有 3 列的表:
ID,
Cancellation_Policy_Type
Cancellation_Policy_Hours.
我想获得的查询将允许我选择:
- 与免费取消对应的最小 Cancellation_Policy_Hours(如果存在)
- 如果具体ID上面不存在,那我想看看有没有部分退款
- 如果以上都不存在,则查看是否有No Refundable。
下面的查询不正确,但它可以让我更好地了解我想要实现的目标:
IF (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Free Cancellation') IS NOT NULL)
THEN (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Free Cancellation')
ELSEIF (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Free Cancellation') IS NULL AND (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours from MYTABLE WHERE Cancellation_Policy_Type = 'Partially Refundable') IS NOT NULL Then (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Partially Refundable')
ELSEIF (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Free Cancellation') IS NULL AND (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'Partially Refundable') IS NULL THEN (SELECT ID, Cancellation_Policy_Type, MIN(Cancellation_Policy_Hours) from MYTABLE WHERE Cancellation_Policy_Type = 'No Refundable')
END
您将在下面找到我的数据集的示例:
这是包含有关每个 ID 取消政策的所有数据的表格:
下面是期望的结果,这是一个包含其他信息(包括生产)的表格和 2 列,其中每个 ID 重复最佳可用取消政策类型和时间:
谢谢
【问题讨论】:
-
如果您解释“其他列”来自哪个表以及与 MYTABLE 的关系是什么,将会有所帮助。
标签: mysql