Consulta sobre mi query
Publicado por Mariano (7 intervenciones) el 01/09/2020 18:04:44
Buenas tardes,,,
Los consulto por que hoy investigando sobre los desastres de programacion que colocaron desarrolladores que antes trabajaban en mi empresa me encontré con lo siguiente...
Tengo en un bloque load de un modulo del sistema que monitoreo lo siguiente...
Lo que hace en si eso es llenar una grilla en la cual primero consulta sobre cuantos cheques están próximos a vencer luego los que tienen distintos importes...
Por lo que se observa los querys son casi similares salvo las clausulas WHERE...
Ando en la búsqueda de optimizar este query y lo que se me ocurría era hacer una especie de CASE que englobe en un solo query todo lo que se ejecuta 4 veces cada vez que se abre esta ventana...
Es lógico lo que planteo o como puedo hacer para "juntar" esas querys y generar una sola y me traiga todo lo que estoy necesitando conseguir??
Muchas Gracias...
Los consulto por que hoy investigando sobre los desastres de programacion que colocaron desarrolladores que antes trabajaban en mi empresa me encontré con lo siguiente...
Tengo en un bloque load de un modulo del sistema que monitoreo lo siguiente...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--primer consulta - CHEQUES A DEPÓSITAR ES DECIR QUE TIENEN 30 DIAS O MENOS DE LA FECHA DE PAGO
select che.NroCheque, che.fechapago, che.Importe, ban.BancoNombre, che.ClienteNombre, che.CUITTitular, che.NroCuentaTitular, che.CodigoPostal, loc.Localidad, loc.Provincia, tc.NroInternoChe
from CPTransferenciasFondos tf
left join CPTransCequesDetalle tc on tc.TransferenciaId = tf.IdTransferencia and tc.Estado = 'S'
left join ChequesTerceros che on che.NroInterno = tc.NroInternoChe and che.Estado = 'Cart.'
left join Bancos ban on ban.BancoID = che.BancoID
left join Localidades loc on loc.CodigoPostal = che.CodigoPostal
where tf.Estado = 'A' and tf.ModuloDestino = 25 and DateDiff(d, che.fechapago, getdate()) between 0 and 30
Order by che.FechaPago, che.Importe
--CHEQUES DE MENOS DE 1000
select che.NroCheque, che.fechapago, che.Importe, ban.BancoNombre, che.ClienteNombre, che.CUITTitular, che.NroCuentaTitular, che.CodigoPostal, loc.Localidad, loc.Provincia, tc.NroInternoChe
from CPTransferenciasFondos tf
left join CPTransCequesDetalle tc on tc.TransferenciaId = tf.IdTransferencia and tc.Estado = 'S'
left join ChequesTerceros che on che.NroInterno = tc.NroInternoChe and che.Estado = 'Cart.'
left join Bancos ban on ban.BancoID = che.BancoID
left join Localidades loc on loc.CodigoPostal = che.CodigoPostal
where tf.Estado = 'A' and tf.ModuloDestino = 25 and DateDiff(d, che.fechapago, getdate()) < 0 and che.importe < 1000
Order by che.FechaPago, che.Importe
--CHEQUES DE 1001 A 2999
select che.NroCheque, che.fechapago, che.Importe, ban.BancoNombre, che.ClienteNombre, che.CUITTitular, che.NroCuentaTitular, che.CodigoPostal, loc.Localidad, loc.Provincia, tc.NroInternoChe
from CPTransferenciasFondos tf
left join CPTransCequesDetalle tc on tc.TransferenciaId = tf.IdTransferencia and tc.Estado = 'S'
left join ChequesTerceros che on che.NroInterno = tc.NroInternoChe and che.Estado = 'Cart.'
left join Bancos ban on ban.BancoID = che.BancoID
left join Localidades loc on loc.CodigoPostal = che.CodigoPostal
where tf.Estado = 'A' and tf.ModuloDestino = 25 and DateDiff(d, che.fechapago, getdate()) < 0 and che.importe between 1000 and 2999
Order by che.FechaPago, che.Importe
--CHEQUES MAYORES A 2999
select che.NroCheque, che.fechapago, che.Importe, ban.BancoNombre, che.ClienteNombre, che.CUITTitular, che.NroCuentaTitular, che.CodigoPostal, loc.Localidad, loc.Provincia, tc.NroInternoChe
from CPTransferenciasFondos tf
left join CPTransCequesDetalle tc on tc.TransferenciaId = tf.IdTransferencia and tc.Estado = 'S'
left join ChequesTerceros che on che.NroInterno = tc.NroInternoChe and che.Estado = 'Cart.'
left join Bancos ban on ban.BancoID = che.BancoID
left join Localidades loc on loc.CodigoPostal = che.CodigoPostal
where tf.Estado = 'A' and tf.ModuloDestino = 25 and DateDiff(d, che.fechapago, getdate()) < 0 and che.importe > 2999
Order by che.FechaPago, che.Importe
Lo que hace en si eso es llenar una grilla en la cual primero consulta sobre cuantos cheques están próximos a vencer luego los que tienen distintos importes...
Por lo que se observa los querys son casi similares salvo las clausulas WHERE...
Ando en la búsqueda de optimizar este query y lo que se me ocurría era hacer una especie de CASE que englobe en un solo query todo lo que se ejecuta 4 veces cada vez que se abre esta ventana...
Es lógico lo que planteo o como puedo hacer para "juntar" esas querys y generar una sola y me traiga todo lo que estoy necesitando conseguir??
Muchas Gracias...
Valora esta pregunta
0