PDA

Ver la Versión Completa : Cálculo de un total mediante SELECT


rretamar
12-12-2011, 17:51:52
Una consulta: tengo una tabla simple como la siguiente:

Campo1 Campo2
registro #1: 45 0
registro #2: 23 22
registro #3: 43 0
registro #4: 154 12
registro #5: 65 0
registro #6: 3 0
registro #7: 11 0

Lo que necesito hacer es obtener la suma de los valores del primer campo (algo muy simple), pero en los registros en que el segundo campo es distinto de cero (por ejemplo en los valores 22 y 12 en los registros 2 y 4 respectivamente), es ese valor el que tengo que incluir en el total, ignorando los valores del campo1 para ese registro (23 y 154 en este ejemplo). ¿ Se puede hacer todo junto desde una única sentencia SELECT ?.

En la tabla de ejemplo, el total sería: 45 + 22 + 43 + 12 + 65 + 3 + 11

Desde ya, muchas gracias.

oscarac
12-12-2011, 17:56:11
puedes usar un case


Select Sum (Case when Total2 = 0 then Total1 else Total2 end) as Importe from...

rretamar
12-12-2011, 18:04:16
Muchas gracias por la pronta respuesta !!!

Lo pondré en práctica.

oscarac
12-12-2011, 18:13:05
ok
comentas si es lo que necesitas o quiza falte afinar algun detalle:cool:

olbeup
12-12-2011, 21:39:16
Esto es SQL SERVER, no se cómo será en MySQL
SELECT TOP 1
(SELECT
SUM(CAMPO1)
FROM TablaCampos
WHERE CAMPO2 = 0) +
(SELECT
SUM(CAMPO2)
FROM TablaCampos
WHERE CAMPO2 <> 0
) AS TOTALCAMPOS
FROM TablaCampos

Un saludo.

rretamar
13-12-2011, 14:38:34
puedes usar un case:

Select Sum (
Case
when Total2 = 0
then
Total1
else
Total2
end
) as Importe from...




Funcionó perfecto, muchas gracias. Me ahorró mucho tiempo, porque pensaba hacer dos sentencias SELECT y después con una tercerca calcular el total. Esta solución en cambio es breve y elegante. Así da gusto.

Agradezco también por la segunda alternativa. :)

Saludos !

oscarac
13-12-2011, 14:56:43
por fin pude contestar a una respuesta!!!!!!!

:D:D:D:D:D:D:D:D:D

rretamar
15-12-2011, 05:13:10
por fin pude contestar a una respuesta!!!!!!!

:D:D:D:D:D:D:D:D:D

No sólo respondiste una pregunta, sino que brindaste una solución muy buena. :)

Nuevamente ,gracias.