Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta Multipicar o No multiplicar (https://www.clubdelphi.com/foros/showthread.php?t=95334)

Carmelo Cash 13-08-2021 17:53:22

Consulta Multipicar o No multiplicar
 
Buen día foro.

Estoy usando Firebird 2.5

Les traigo una consulta sobre un SQL, a ver si se puede resolver sin programar.

Una tabla con 4 campos, "tipo", "Total", "uno","dos"

Necesito dos campos "calculados" uno que sea el 3% del total y otro el 5% del total, pero el 3% solo en aquellos casos que el campo "UNO" sea mayor a cero y el 5% solo en aquellos que el campo "DOS" sea mayor a cero.

El resultado que necesito obtener es el siguiente:

TIPO_TOTAL_UNO___DOS__TRES_CINCO

1____100____21_____0____3_____0
1____200_____0____52____0____10
1____300____63____79____9____15
1____400____00_____0____0_____0
2____100____21_____0____3_____0
2____200_____0____52____0____10
3____300____63____79____9____15
3____400_____0_____0____0_____0

Si quieren probar adjunto los scrips para crear y completar las tablas y mi consulta que NO funciona.

Desde ya muchas gracias por su atención.:cool:


create Table prueba20210813 (
Tipo integer,
Total Numeric (15,2) Not null,
Uno Numeric (15,2) Not null,
Dos Numeric (15,2) Not null);

Insert into prueba20210813 values (1, 100,21 ,0);
Insert into prueba20210813 values (1, 200,0 ,52);
Insert into prueba20210813 values (1, 300,63 ,79);
Insert into prueba20210813 values (1, 400,0 ,0);
Insert into prueba20210813 values (2, 100,21 ,0);
Insert into prueba20210813 values (2, 200,0 ,52);
Insert into prueba20210813 values (3, 300,63 ,79);
Insert into prueba20210813 values (3, 400,0 ,0);

Select tipo, Total, uno,dos , total * 0.03 as tres, total *0.05 as cinco
from prueba20210813

ecfisa 13-08-2021 19:25:30

Hola.

Según te entiendo creo que sería:
Código SQL [-]
SELECT
 TIPO,
 TOTAL,
 UNO,
 DOS,
 IIF( UNO > 0, TOTAL * 0.03, 0 ) AS PERC_3,
 IIF( DOS > 0, TOTAL * 0.05, 0 ) AS PERC_5
FROM PRUEBA20210813

Saludos :)

Carmelo Cash 13-08-2021 20:44:44

Si señór
 
Efectivamente es así.

Gracias amigo


La franja horaria es GMT +2. Ahora son las 11:31:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi