'SI' en la declaración 'SELECT': elija el valor de salida según los valores de la columna

Resuelto Michael asked hace 13 años • 8 respuestas
SELECT id, amount FROM report

Necesito amountser amountsi report.type='P'y -amountsi report.type='N'. ¿Cómo agrego esto a la consulta anterior?

Michael avatar May 10 '11 20:05 Michael
Aceptado
SELECT id, 
       IF(type = 'P', amount, amount * -1) as amount
FROM report

Consulte https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html .

Además, puede manejar cuando la condición es nula. En el caso de importe nulo:

SELECT id, 
       IF(type = 'P', IFNULL(amount,0), IFNULL(amount,0) * -1) as amount
FROM report

La parte IFNULL(amount,0)significa que cuando el monto no es nulo, devuelve el monto; de lo contrario, devuelve 0 .

Felipe Buccioni avatar May 10 '2011 13:05 Felipe Buccioni

Utilice una casedeclaración:

select id,
    case report.type
        when 'P' then amount
        when 'N' then -amount
    end as amount
from
    `report`
mellamokb avatar May 10 '2011 13:05 mellamokb
SELECT CompanyName, 
    CASE WHEN Country IN ('USA', 'Canada') THEN 'North America'
         WHEN Country = 'Brazil' THEN 'South America'
         ELSE 'Europe' END AS Continent
FROM Suppliers
ORDER BY CompanyName;
user1210826 avatar Nov 08 '2012 06:11 user1210826
select 
  id,
  case 
    when report_type = 'P' 
    then amount 
    when report_type = 'N' 
    then -amount 
    else null 
  end
from table
sang kaul avatar Jun 21 '2012 09:06 sang kaul