2017-10-16 174 views
1

我有一個表下方SQL查詢來選擇某些行

+++++++++++++++++++++++++ 
colA | colB | colC | colD 
+++++++++++++++++++++++++ 
1 | female | ... | ... 
2 | male | ... | ... 
3 |  | ... | ... 
4 | select | ... | ... 
5 | dfd | ... | ... 
+++++++++++++++++++++++++ 

給出我想選擇與COLB「女性」或「男性」的所有行,也行空或「選擇」 colB中的值,但想將其重命名爲「未知」。結果表應該是:

+++++++++++++++++++++++++ 
colA | colB | colC | colD 
+++++++++++++++++++++++++ 
1 | female | ... | ... 
2 | male | ... | ... 
3 | unknown| ... | ... 
4 | uknown | ... | ... 
+++++++++++++++++++++++++ 

我的查詢語句:

SELECT colA, colB, colC, colD FROM table 
where (colB in ('female','male') and 
     case when colB = '' then 'unknown' 
      when colB = 'select' then 'unknown' end) 
+0

問題是什麼? –

回答

2

你似乎想:​​

SELECT colA, 
     (CASE WHEN colB IN ('female', 'male') THEN colb ELSE 'unknown' END) as colB, 
     colC, colD 
FROM table 
WHERE colB in ('female', 'male', '') OR colB IS NULL; 
2

所以,你想有四個值的行,但你要以不同的方式呈現兩種情況。

更改值的顯示應該在選擇列表中完成。

SELECT colA, 
    CASE WHEN colB IN ('','select') THEN 'unknown' ELSE colB END AS colB,  
    colC, colD 
FROM table 
WHERE colB IN ('','select','female','male');