我正在為這個查詢而苦苦掙扎。我有一個包含兩個欄位的表 deliverystatus,電子郵件和狀態。該表填充有電子郵件及其相關的遞送狀態,例如“途中”、“已遞送”、“無狀態”、“未遞送”。對于給定的電子郵件,除了提到的任何其他狀態外,它們始終可以是“途中”狀態。如果一封電子郵件的狀態為“enroute”并且沒有其他狀態,則只應選擇“enroute”,任何其他狀態應始終取代“enroute”并且應該是唯一報告的狀態。查看下表。
|Email | Status |
|---------- | ------------|
|abc@abc.com | enroute |
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
當我做這個查詢時,它應該只會讓我得到以下資訊。注意 [email protected] 只報告了一次“已送達”狀態,因為它取代了“enroute”,而 [email protected] 被列為“enroute”,因為沒有找到該電子郵件的其他狀態。
|Email | Status |
|---------- | ------------|
|abc@abc.com | delivered |
|xyz@abc.com | delivered |
|jkl@abc.com | undelivered |
|ppp@abc.com | enroute |
有人可以幫忙嗎?
uj5u.com熱心網友回復:
我假設您處理的狀態值不超過兩個,并且您已經在使用group by:
coalesce(max(case when status <> 'enroute' then status end), 'enroute')
或者
coalesce(max(nullif(status, 'enroute')), 'enroute')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/392797.html
