2017-01-19 3 views
0

Вот мой стол: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 

Любая помощь будет оценили ребята.

ответ

2

У вас нет ELSE футляра в вашем запросе. Без ELSE результатов не будет, если shares меньше нуля. Кроме того, вам не нужно назначать price * -1price. Просто используйте его так:

CASE WHEN shares < 0 
    THEN price * -1 
    ELSE price 
END 
Смежные вопросы