SQLite3 IF 语句,基于其他列的条件



这是我的表格:

sqlite> SELECT * from portafolio WHERE my_id=1;
id          my_id       stock       name           shares      price       date               
----------  ----------  ----------  -------------  ----------  ----------  -------------------
1           1           NFLX        Netflix, Inc.  2           133.26      2017/01/19  06:40AM
2           1           GM          General Motor  1           37.47       2017/01/19  06:40AM
3           1           NFLX        Netflix, Inc.  -2          133.26      2017/01/19  06:41AM
4           1           NFLX        Netflix, Inc.  4           133.26      2017/01/19  06:41AM

如果price是负数,我想shares负数。

我知道我必须使用CASE但不知道如何正确实现它,这是我的尝试:

sqlite> SELECT CASE 
   ...> WHEN shares<0
   ...> THEN price=price*-1
   ...> END, stock,shares,price FROM portafolio;

输出:

CASE
WHEN shares<0
THEN price=price*-1
END  stock       shares      price     
------------------------------------------  ----------  ----------  ----------
                                            NFLX        2           133.26    
                                            GM          1           37.47     
0                                           NFLX        -2          133.26    
                                            NFLX        4           133.26    
                                            ST          1           41.2      
                                            HA          5           56.65     
0                                           ST          -1          41.2      
0                                           HA          -3          56.65     
0                                           HA          -2          56.65     
                                            GM          1           37.47     
0                                           GM          -1          37.47  

任何帮助将不胜感激。

查询中没有任何ELSE情况。如果没有ELSE如果shares小于零,则不会有结果。此外,您无需将price * -1分配给price。只需像这样使用它:

CASE WHEN shares < 0
     THEN price * -1
     ELSE price
END

最新更新