我有一個表:如何反轉查詢中的通過/失敗狀態列?
sid sname status
101 abc pass
102 cda fail
103 fgh pass
104 hij pass
105 jqk fail
106 lfj fail
,我想一個輸出:
sid sname status
101 abc fail
102 cda pass
103 fgh fail
104 hij fail
105 jqk pass
106 lfj pass
我有一個表:如何反轉查詢中的通過/失敗狀態列?
sid sname status
101 abc pass
102 cda fail
103 fgh pass
104 hij pass
105 jqk fail
106 lfj fail
,我想一個輸出:
sid sname status
101 abc fail
102 cda pass
103 fgh fail
104 hij fail
105 jqk pass
106 lfj pass
select
sid,
sname,
case
when status = 'pass' then 'fail'
when status = 'fail' then 'pass'
else null
end as 'status'
from tableX
'when status ='fail'then'pass' else null' redundant。 –
我想他想要更新 – brykneval
@HamletHakobyan:'else null'是多餘的,但沒有傷害,並且是明確的,並且明確是好的。 –
UPDATE Table
SET Status = CASE Status WHEN 'pass' THEN 'fail' ELSE 'pass' END
GO
SELECT *
FROM Table
GO
或者:
UPDATE Table
SET Gender = IIF(Gender = 'pass', 'fail', 'pass')
GO
SELECT *
FROM Table
GO
歡迎來到Stack Overflow。太久之前請閱讀[常見問題]。僅供參考:要將代碼輸入爲代碼,請將其輸入到編輯框中,然後選中它,然後按下框上方的**按鈕將其全部縮進4個空格。避免製表符;他們使事情複雜化。 –
你的第一個'CASE'語句的問題是,如果有任何具有NULL狀態的行,它們將變成'pass'行。這可能是我們所期望的(如果確實需要UPDATE,我將它解釋爲像MacGyver那樣作爲查詢,而不是UPDATE),但它可能不是。同樣,我想知道'IIF'版本對包含NULL狀態的行做了什麼?請注意,'... SET status = CASE狀態WHEN'失敗'THEN'傳遞'ELSE'失敗'END'時,如果有任何狀態爲空的行,則會產生不同的結果。 –
是不是作弊? – MacGyver
只是使用case語句否定狀態 –