Duda Consulta SQL

Expertos, tengo un problema con una consulta en SQL que no he podido resolver. Quizás es MUY fácil pero soy algo principiante en esto.
Tengo una tabla de transacciones que entre otros campos tiene:
Monto Transacción
Tipo Transacccion (Cuota fija, Cuota comercio, N cuotas precio contado)
Rubro (Comercio, salud, restaurant, etc)
Tipo de Tarjeta (Visa, Master, etc)
Lo que tengo que hacer es determinar para cada tipo de tarjeta, la cantidad de compras y el monto de las compras en cada rubro, Ejemplo: "Del total de Tarjeas Visa, se gastó $100.000.000 en Restaurant" ----> Esto si lo pude hacer.
La dificultad es que El tipo de transacción afecta.
Si es cuota fija o cuota comercio no hay problema.
Si es N cuota precio contado hay que considerar solo las que empiecen a pagarse este mes (no las que vengan de meses anteriores). Para saber eso, hay 2 columnas más que una de ellas es Cuota que está pagando este mes (0,1,2 o 3) y otra columna que es el Total de Cuotas.
En otras palabras, de las N cuotas precio contado hay que considerar solo las que sea cuota "0 de 3".
Por otro lado, si compre algo de $30.000 en 3 cuotas, cada cuota será de $10.000, pero en mi resumen que quiero obtener, tendría que sumar el total de a compra ($30.000 y no los $10.000).
En otras palabras:
if Tipo_Transaccion = Cuota_Fija or Tipo_Transaccion = Cuota_Comercio then
Acumulado_Transaccion=Acumulado_Transaccion + Transaccion_Cuota
end if
if Tipo_Transaccion=N_Cuota_P_Contado and Cuota_Mes=0 then
Acumulado_Transaccion=Acumulado_Transaccion+(Transaccion_Cuota*Total_Cuotas)
end if
Ejemplo Tabla (NPC--> N cuotas precio contado):
Rubro                  Tipo         Cuota      Cuota_Mes     Total_Cuotas      Monto
Restaurant Visa Fija - - $10
Restaurant          Visa         NPC            0                        3                     $20
Restaurant          Visa         NPC            2                        3                     $30
Restaurant          Visa          NPC           0                        4                      $50
--------------------------------------------------------------------------------------------------------
De esta tabla yo debería Obtener:
Total Visa en Restaurant = $10 + (3*$20) + (4*$50) = $270
Espero que puedan ayudarme! He tratado y no supe como.
Muchas gracias.
Stefano
Respuesta
1
a ver si esto te ayuda,
select 'Del total de ' , tipo, 'hizo ', count(*) as cantidad_compras
' compras y se gastó $', sum(Transaccion_Cuota) as acumulado_transaccion, ' en ', rubro
where Tipo_Transaccion = 'Cuota_Fija' or Tipo_Transaccion = 'Cuota_Comercio'
group by rubro, tipo
union all
select 'Del total de ' , tipo, 'hizo ', count(*) as cantidad_compras
' compras y se gastó $', sum(Transaccion_Cuota*total_cuotas) as acumulado_transaccion, ' en ', rubro
where Tipo_Transaccion='N_Cuota_P_Contado' and Cuota_Mes=0 
group by rubro, tipo
aunque en realidad creo que debería usarse monto y que tu primer if quizás tenga el campo equivocado, en cuyo caso sería:
select 'Del total de ' , tipo, 'hizo ', count(*) as cantidad_compras
' compras y se gastó $', sum(monto) as acumulado_transaccion, ' en ', rubro
where Tipo_Transaccion = 'Cuota_Fija' or Tipo_Transaccion = 'Cuota_Comercio'
group by rubro, tipo
union all
select 'Del total de ' , tipo, 'hizo ', count(*) as cantidad_compras
' compras y se gastó $', sum(Transaccion_Cuota*total_cuotas) as acumulado_transaccion, ' en ', rubro
where Tipo_Transaccion='N_Cuota_P_Contado' and Cuota_Mes=0 
group by rubro, tipo
Ya me dirás, si te ha servido así
¿Te sirvió mi respuesta?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas