SELECT id, amount FROM report
Muszę amount
być amount
jeśli report.type='P'
i -amount
jeśli report.type='N'
. Jak dodać to do powyższego zapytania?
SELECT id,
IF(type = 'P', amount, amount * -1) as amount
FROM report
Zobacz http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html .
Ponadto można obsługiwać, gdy warunek jest pusty. W przypadku kwoty zerowej:
SELECT id,
IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report
Część IFNULL(amount,0)
oznacza, gdy kwota nie jest zerową wartością zwrotu, w przeciwnym razie zwraca 0 .
sql/item_cmpfunc.h 722: Item_func_ifnull(Item *a, Item *b) :Item_func_coalesce(a,b) {}
IF
stwierdzenia, co jest nie tak?Użyj
case
oświadczenia:źródło
if report.type = 'P' use amount, otherwise use -amount for anything else
. nie uwzględni typu, jeśli nie jest to „P”.źródło
źródło
Najprostszym sposobem jest użycie IF () . Tak MySQL pozwala na wykonywanie logiki warunkowej. JEŻELI funkcja przyjmuje 3 parametry WARUNEK, PRAWDA WYNIK, FAŁSZ WYNIK.
Więc logika jest
SQL
Możesz pominąć abs (), jeśli wszystkie nie są tylko + ve
źródło
źródło
Możesz także tego spróbować
źródło