[英]How do I create a new column that is based on multiple values in another column?
現在我必須創建一個名為 final status 的行,它的狀態基於一個人的所有命令。
因此,對於約翰來說,由於他的兩個訂單都已交付,因此最終狀態將是完整的。
對於 David,因為他的兩個訂單的狀態已提交並創建,他的最終狀態將是 IN Progress。 希望這是有道理的。
我已經考慮過嘗試將狀態拆分為不同的列並在后面使用 case 語句,但我不知道如何在單個查詢中完成所有這些操作。
真的很感激這里的一些幫助!
我想補充的另一個澄清是,不同的狀態組合將提供不同的最終狀態:
當客戶的所有訂單都已交付時,狀態為 COMPLETE
因此,如果客戶有未交付的訂單和一些已交付的訂單,則狀態將為 IN PROGRESS
如果所有客戶訂單都已提交,則其狀態將為等待進度
否則最終狀態將是等待提交
如果您希望以您描述的方式檢索數據,您可以嘗試以下方法 -
Select distinct customer_name,
CASE
WHEN EXISTS (SELECT status FROM cust_order_status os1
WHERE os1.order_id = os.order_id
and upper(os1.status) <> 'DELIVERED')
THEN 'In Progress'
ELSE 'Complete'
END AS FinalOrderStatus
from cust_order_status os;
修改后更新查詢 -
Select distinct customer_name,
CASE
WHEN NOT EXISTS (SELECT status FROM cust_order_status os1
WHERE os1.order_id = os.order_id
and upper(os1.status) <> 'DELIVERED')
THEN 'Complete'
ELSE
CASE
WHEN EXISTS (SELECT status FROM cust_order_status os1
WHERE os1.order_id = os.order_id
and upper(os1.status) = 'DELIVERED')
THEN 'In Progress'
ELSE
CASE
WHEN NOT EXISTS (SELECT status FROM cust_order_status os1
WHERE os1.order_id = os.order_id
and upper(os1.status) <> 'SUBMITTED')
THEN 'Awaiting Progress'
ELSE 'Awaiting Submission'
END
END
END AS FinalOrderStatus
from cust_order_status os;
根據您的澄清,這稍微復雜一些。 您是在暗示狀態本身是序列的一部分,因此我們需要將它們 map 到序列中的順序點,在客戶之間聚合每個不同的狀態,然后將組合結果重新映射到您的組合狀態。
Select Customer_name,
Case When all_statuses='3' Then 'Complete'
When all_statuses like '3%' Then 'In Progress'
When all_statuses like '2%' Then 'Awaiting Progress'
Else 'Awaiting Submission' End as final_status
From (
Select Customer_name,
Group_Concat(Distinct Case when status='CREATED' Then '1'
When status='SUBMITTED' Then '2'
When status='DELIVERED' Then '3' End
Order by Case when status='CREATED' Then '1'
When status='SUBMITTED' Then '2'
When status='DELIVERED' Then '3' End desc
Separator '') as all_statuses
From Mytable
Group by Customer_name
)
如果 Group_Concat 不允許您在映射時嵌入案例,那么您必須在一個 Select 中進行案例映射,第二個是 group_concat,第三個是重新映射。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.