sql查询偏好顺序
sql query preference order
我正在为这个查询苦苦挣扎。我有一个包含两个字段的 table deliverystatus,Email 和 Status。此 table 填充了电子邮件及其相关的传递状态,例如“正在发送”、“已传递”、“无状态”、“未传递”。对于给定的电子邮件,除了提到的任何其他状态之外,它们始终可以是“正在发送”状态。如果电子邮件的状态为“正在发送”并且没有其他状态,则应仅选择“正在发送”,任何其他状态应始终取代“正在发送”并且应该是唯一报告的状态。查看下面的 table。
|Email | Status |
|---------- | ------------|
|abc@abc.com | enroute |
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
当我执行此查询时,它应该只会让我得到以下信息。注意 abc@abc.com 仅报告一次“已送达”状态,因为它取代了“在途”,而 ppp@abc.com 被列为“在途”,因为没有找到该电子邮件的其他状态。
|Email | Status |
|---------- | ------------|
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
有人可以帮忙吗?
我假设您处理的状态值不超过两个,并且您已经在使用 group by
:
coalesce(max(case when status <> 'enroute' then status end), 'enroute')
或者
coalesce(max(nullif(status, 'enroute')), 'enroute')
我正在为这个查询苦苦挣扎。我有一个包含两个字段的 table deliverystatus,Email 和 Status。此 table 填充了电子邮件及其相关的传递状态,例如“正在发送”、“已传递”、“无状态”、“未传递”。对于给定的电子邮件,除了提到的任何其他状态之外,它们始终可以是“正在发送”状态。如果电子邮件的状态为“正在发送”并且没有其他状态,则应仅选择“正在发送”,任何其他状态应始终取代“正在发送”并且应该是唯一报告的状态。查看下面的 table。
|Email | Status |
|---------- | ------------|
|abc@abc.com | enroute |
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
当我执行此查询时,它应该只会让我得到以下信息。注意 abc@abc.com 仅报告一次“已送达”状态,因为它取代了“在途”,而 ppp@abc.com 被列为“在途”,因为没有找到该电子邮件的其他状态。
|Email | Status |
|---------- | ------------|
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
有人可以帮忙吗?
我假设您处理的状态值不超过两个,并且您已经在使用 group by
:
coalesce(max(case when status <> 'enroute' then status end), 'enroute')
或者
coalesce(max(nullif(status, 'enroute')), 'enroute')