2016-07-07 39 views
-1

如何將新編輯的列添加到現有查詢中?添加新數據列

我的查詢返回這樣的結果:

product_name task_state operation_code 
------------------------------------------ 
KABY LAKE U 2+2 NULL  7571 
KABY LAKE U 2+2 FUTURE WIP 7571 
KABY LAKE U 2+2 NULL  6881 
KABY LAKE U 2+2 NULL  7571 
KABY LAKE U 2+2 NULL  7460 
KABY LAKE U 2+2 NULL  7571 
KABY LAKE U 2+2 NULL  6881 
KABY LAKE U 2+2 FUTURE WIP 7571 

,我想替換所有 'NULL'(空單元格,而不是 'NULL' TXT)爲 「完成」。

「tasks_state」下的所有其餘數據可以按原樣粘貼到新列中。

最後我希望查詢結果會是這樣:

product_name task_state operation_code Task status 
----------------------------------------------------------- 
KABY LAKE U 2+2 NULL  7571   Done 
KABY LAKE U 2+2 FUTURE WIP 7571   FUTURE WIP 
KABY LAKE U 2+2 NULL  6881   Done 
KABY LAKE U 2+2 NULL  7571   Done 
KABY LAKE U 2+2 NULL  7460   Done 
KABY LAKE U 2+2 NULL  7571   Done 
KABY LAKE U 2+2 NULL  6881   Done 
KABY LAKE U 2+2 FUTURE WIP 7571   FUTURE WIP 

感謝

+0

向我們展示您的原始查詢,請以便我們可以建議需要的修改。 –

+0

告訴我們你試過的東西 – dfundako

+0

哪種RDBMS適用於?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

回答

1

使用NULLIF

試試這個

SELECT NULLIF(task_state ,'Done') FROM YourTable 

查詢是

SELECT product_name,NULLIF(task_state ,'Done'),operation_code,[Task status] 
FROM YourTable 
+0

我得到了答案(這是錯誤的,因爲'NULLIF()'和'IFNULL()'之間的混淆,我沒有得到upvote –

+0

NULLIF如果兩個指定表達式相等,則返回空值NULLIF返回第一個表達式,如果兩個表達式不相等如果表達式相等,則NULLIF返回第一個表達式類型的NULL值NULLIF相當於一個搜索的CASE函數,其中兩個表達式相等並且結果表達式爲NULL 。 –

+0

ISNULL用指定的替換值替換NULL,如果不是NULL,則返回check_expression的值;否則,在隱式轉換爲check_expression類型後返回replacement_value,如果類型不同。 –

1

最好的功能,採用的是COALESCE()這是ANSI標準:

SELECT COALESCE(task_state, 'Done') 
FROM t; 

如果文本還包含'NULL',我會切換到`CASE:

SELECT (CASE WHEN task_state IS NULL or task_state = 'NULL' 
      THEN 'Done' ELSE task_state 
     END) as "Task Status"