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

时间:2017-01-19 07:30:20

标签: sqlite case conditional-statements

这是我的表:

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  

任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

您的查询中没有ELSE个案例。如果ELSE小于零,则没有shares将没有结果。此外,您不需要将price * -1分配给price。只需使用它:

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