我的資料庫已經準備好了以下截圖中的資料,綠色列是自定義列,我需要在從SQL/Oracle查詢資料時生成。
邏輯。如果Actual_Completion_Date不是一個空的/空的,那么就把 Actual_Completion_Date進入Completion_Date,否則得到 計劃_完成日期在完成日期列中。
在沒有存盤程序幫助的情況下,在SQL查詢中定義列名時,我是否有辦法寫If陳述句。
uj5u.com熱心網友回復:
如果兩個日期欄位都包含NULL值,那么只需使用COALESCE()。如果第一個欄位是NULL,那么第二個欄位的值將顯示出來,如果它不是NULL。如果第一個欄位不是空的,那么將顯示第一個欄位的值。
SELECT Activity_Details, Actual_Completion_Date
, 計劃完成日期
COALESCE(Actual_Completion_Date, Schedule_Completion_Date) AS Completion_Date
FROM tbl;
uj5u.com熱心網友回復:
你可以簡單地在你的查詢的SELECT子句中這樣做。例如,在mysql中使用IF()函式,像這樣:
SELECT Activity_Details, Actual_Completion_Date, Schedule_Completion_Date。IF(Actual_Completion_Date IS NOT NULL, Actual_Completion_Date, Schedule_Completion_Date) AS Completion_Date
FROM tbl;
IF函式接受一個應該回傳真或假的條件作為第一個引數。如果該條件評估為真,則回傳第二個引數,如果評估為假,則回傳第三個引數。
在Oracle或Microsoft SQL server中,你將在查詢的SELECT子句中做類似的事情,但使用CASE WHEN ... 然后... ELSE ... END
uj5u.com熱心網友回復:
Oracle(和MySQL)都支持生成的列。 這意味著你可以把邏輯作為表定義的一部分來添加。 我不確定這是否是你所要求的,但在Oracle中,這看起來像:
alter table t add column completion_date date generated always as
(coalesce(Actual_Completion_Date, Schedule_Completion_Date)) 虛擬。
當表被查詢時,這將被計算出來,并且可用于任何使用該表的查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324979.html
標籤:
下一篇:我如何在單引號中傳遞變數?

