SELECT id, amount FROM report
Eu preciso amount
ser amount
se report.type='P'
e -amount
se report.type='N'
. Como adiciono isso à consulta acima?
SELECT id,
IF(type = 'P', amount, amount * -1) as amount
FROM report
Consulte http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html .
Além disso, você pode manipular quando a condição é nula. No caso de um valor nulo:
SELECT id,
IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report
A parte IFNULL(amount,0)
significa que quando o valor não for nulo, o valor retornado será o retorno 0 .
sql/item_cmpfunc.h 722: Item_func_ifnull(Item *a, Item *b) :Item_func_coalesce(a,b) {}
IF
declaração, o que há de errado?Use uma
case
declaração:fonte
if report.type = 'P' use amount, otherwise use -amount for anything else
. não considerará o tipo se não for 'P'.fonte
fonte
A maneira mais simples é usar um IF () . Sim O Mysql permite fazer lógica condicional. A função SE leva três parâmetros: CONDIÇÃO, RESULTADO VERDADEIRO, RESULTADO FALSO.
Então a lógica é
SQL
Você pode pular abs () se todos os nãos forem apenas + ve
fonte
fonte
Você pode tentar isso também
fonte