簡體   English   中英

根據 2 個條件在 SQL 添加新列

[英]Add new column in SQL based on 2 conditions

我想使用兩個條件在 SQL 中創建一個新列。 我想創建一個列,如果項目計數大於 1 並且如果項目/總和大於 5,則返回 0。這不是我的原始數據,無論如何我可以添加這個指定的新列使用 select 語句的行。

首先我想說的是,應該避免使用 SQL 關鍵字或 SQL function 名稱作為表名或列名,因此如果可能的話,我建議將列重命名為“number”和“sum”。 第二點是不清楚如果總和列為 0 會發生什么。由於不可能被零除,因此您需要為此添加一個條件。 無論如何,實現這些事情的方法是使用CASE WHEN 所以讓我們添加新列:

ALTER TABLE yourtable ADD column column_name INT;

現在,您需要對該列執行更新命令,提供您要應用的邏輯。 例如,您可以這樣做:

UPDATE yourtable SET column_name =
CASE WHEN item <= 1 THEN 0
WHEN sum = 0 THEN 1
WHEN item / sum > 0.5 THEN 1
ELSE 0 END;

只有在 item > 1 且 sum 為 0 或 sum item / sum > 0.5(大於 50%)的情況下,這才會將新列設置為 1。 在所有其他情況下,它將被設置為 0。同樣,可以看到錯誤的列命名,因為“WHEN sum...”看起來你真的建立了一個總和,而不僅僅是使用一個列。 例如,如果您想在總和為 0 時將新列設置為 0 而不是 1,只需更改它並嘗試。 如果您想在未來的插入或更新中自動應用此邏輯,您可以在新列上添加觸發器。 是這樣的:

CREATE TRIGGER set_column_name
BEFORE INSERT ON yourtable
FOR EACH ROW
SET new.column_name = CASE WHEN new.item <= 1 THEN 0
WHEN new.sum = 0 THEN 1
WHEN new.item / new.sum > 0.5 THEN 1
ELSE 0 END;

但請注意,觸發器的語法取決於您使用的數據庫(此示例適用於 MYSQL)。 由於您沒有告訴我們您使用的是哪個數據庫,您可能需要修改它。 此外,根據您的數據庫類型和要求,您需要零個、一個或兩個觸發器(用於更新和插入)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM