SELECT id, amount FROM report
Je dois amount
être amount
si report.type='P'
et -amount
si report.type='N'
. Comment ajouter ceci à la requête ci-dessus?
SELECT id,
IF(type = 'P', amount, amount * -1) as amount
FROM report
Voir http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html .
En outre, vous pouvez gérer lorsque la condition est nulle. Dans le cas d'un montant nul:
SELECT id,
IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report
La partie IFNULL(amount,0)
signifie que lorsque le montant n'est pas nul, le montant du retour renvoie 0 .
sql/item_cmpfunc.h 722: Item_func_ifnull(Item *a, Item *b) :Item_func_coalesce(a,b) {}
IF
déclaration, qu'est-ce qui ne va pas?Utilisez une
case
déclaration:la source
if report.type = 'P' use amount, otherwise use -amount for anything else
. il ne considérera pas le type s'il n'est pas «P».la source
la source
Le moyen le plus simple consiste à utiliser un IF () . Oui, Mysql vous permet de faire de la logique conditionnelle. SI la fonction prend 3 paramètres CONDITION, TRUE OUTCOME, FALSE OUTCOME.
La logique est donc
SQL
Vous pouvez ignorer abs () si tous les non sont uniquement positifs
la source
la source
Vous pouvez également essayer ceci
la source