SQL - Optimizar consulta Promedios

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 12 puestos en SQL (en relación al último mes)
Gráfica de SQL

Optimizar consulta Promedios

Publicado por Fabian (2 intervenciones) el 17/04/2020 21:00:36
Hola a todos,

Estoy tratando de realizar un consulta que me de promedios de venta por periodos de tiempo (meses anteriores) y clasificado por unidades de negocio (industryc -1, 1, 2 y null) con la siguiente consulta:

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
select
t0.ItemCode 'ID ARTÍCULO',
t0.ItemName 'DESCPRICIÓN',
SUM(case when t1.docdate>dateadd(MM, -3, getdate()) then (t1.OutQty-t1.InQty)/3 else 0 end) '3 meses AS',
SUM(case when t1.docdate>dateadd(MM, -6, getdate()) then (t1.OutQty-t1.InQty)/6 else 0 end) '6 meses AS',
SUM(case when t1.docdate>dateadd(MM, -9, getdate()) then (t1.OutQty-t1.InQty)/9 else 0 end) '9 meses AS',
SUM(case when t1.docdate>dateadd(MM, -12, getdate()) then (t1.OutQty-t1.InQty)/12 else 0 end) '12 meses AS',
SUM(case when t4.docdate>dateadd(MM, -3, getdate()) then (t4.OutQty-t4.InQty)/3 else 0 end) '3 meses EP',
SUM(case when t4.docdate>dateadd(MM, -6, getdate()) then (t4.OutQty-t4.InQty)/6 else 0 end) '6 meses EP',
SUM(case when t4.docdate>dateadd(MM, -9, getdate()) then (t4.OutQty-t4.InQty)/9 else 0 end) '9 meses EP',
SUM(case when t4.docdate>dateadd(MM, -12, getdate()) then (t4.OutQty-t4.InQty)/12 else 0 end) '12 meses EP'
 
from
OITM t0
inner join OINM t1 on t1.ItemCode=t0.ItemCode
inner join TABLAS t3 on t3.IdTabla= t1.TransType
inner join OCRD t2 on t2.CardCode= t1.CardCode
inner join ocrd T5 on T5.CardCode= T1.CardCode,
OINM t4
inner join OCRD t6 on T6.CardCode= T4.CardCode
where
t3.SiesVentas ='SI'  and
T5.IndustryC=-1 and
T6.IndustryC=1
group by t0.ItemCode, t0.ItemName


El problema que tengo es que dura mucho ejecutando el query, quisiera saber si me pueden ayudar a realizar una consulta que no dure tanto (así como está lleva mas de 25 minutos y aún no se ejecuta)

Nota:
1. Los otros inner join es para posteriormente colocar campos de esas tablas
2. En la consulta me falta llamar los datos cuando industry c es 2 y null
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Optimizar consulta Promedios

Publicado por Isaias (1921 intervenciones) el 18/04/2020 01:06:59
¿En que motor de base de datos esta trabajando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Optimizar consulta Promedios

Publicado por Isaias (1921 intervenciones) el 18/04/2020 20:28:17
Entonces, si estas ejecutando tu query en el analizador, debes utilizar el optimizador de consultas, revisa la captura que hice de la opcion
Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar