Hola
Quiero evaluar las ventas del mes, hay un rango de dias por promocion por
cada producto y quiero obtener las ventas y los dias cuando se efectuo fuera
del rango y otra dentro del rango necesito la suma de las ventas y el total
de dias
ejemplo:
ClaArti ClaUnidad ImpRango DiasRango ImpSinRango DiasSinRango
-
10 1 344.0 30 0.0
0
159 4 6186.65 21 1305.90
9
112 6 645.0 22 5774.70
8
Create Table #tblVtas
(ClaArti int,
ClaUnidad int,
Fecha smalldatetime,
Importe float
)
Insert Into #tblVtas Values (10, 1, '20051101', 344.00)
Insert Into #tblVtas Values (112, 6, '20051113', 3065.20)
Insert Into #tblVtas Values (112, 6, '20051112', 1264.00)
Insert Into #tblVtas Values (112, 6, '20051111', 1445.50)
Insert Into #tblVtas Values (112, 6, '20051109', 0.08)
Insert Into #tblVtas Values (112, 6, '20051115', 161.23)
Insert Into #tblVtas Values (112, 6, '20051118', 161.23)
Insert Into #tblVtas Values (112, 6, '20051118', 161.23)
Insert Into #tblVtas Values (112, 6, '20051121', 161.23)
Insert Into #tblVtas Values (159, 4, '20051116', 826.00)
Insert Into #tblVtas Values (159, 4, '20051115', 790.00)
Insert Into #tblVtas Values (159, 4, '20051108', 1305.90)
Insert Into #tblVtas Values (159, 4, '20051102', 1958.85)
Insert Into #tblVtas Values (159, 4, '20051118', 2611.80)
Create Table #tblRango
(ClaArti int,
ClaUnidad int,
FechaIni smalldatetime,
FechaFin smalldatetime)
Insert Into #tblRango Values (10, 1, '20051031', '20051130')
Insert Into #tblRango Values (112, 6, '20051105', '20051110')
Insert Into #tblRango Values (112, 6, '20051115', '20051130')
Insert Into #tblRango Values (159, 4, '20051115', '20051130')
Insert Into #tblRango Values (159, 4, '20051101', '20051105')
de dias y cuantos dias son
resultado)
Declare @dtFechaIni smalldatetime, @dtFechaFin smalldatetime
Select @dtFechaIni = '20051101', @dtFechaFin = '20051130'
Select t1.ClaArti,
t1.ClaUnidad,
ImpRango=Sum(Case When t1.Fecha Between t2.FechaIni And t2.FechaFin Then
t1.Importe Else 0 End),
DiasRango=Max(DiaRango),
ImpSinRango=Sum(Case When t1.Fecha Between t2.FechaIni And t2.FechaFin Then
0 Else t1.Importe End),
DiasSinRango=Datediff(dd,@dtFechaIni,@dtFechaFin)-Max(DiaRango)+1
From #tblVtas t1
Inner Join (Select ClaArti, ClaUnidad,
FechaIni= Case When @dtFechaIni > Min(FechaIni) Then @dtFechaIni Else
Min(FechaIni) End,
FechaFin= Case When @dtFechaFin < Max(FechaFin) Then @dtFechaFin Else
Max(FechaFin) End,
DiaRango=Sum( Distinct dateDiff(dd,Case When @dtFechaIni > FechaIni Then
@dtFechaIni Else FechaIni End,
Case When @dtFechaFin < FechaFin Then @dtFechaFin Else FechaFin
End
)+1)
From #tblRango
Where FechaIni Between @dtFechaIni And @dtFechaFin
Or FechaFin Between @dtFechaIni And @dtFechaFin
Group By ClaArti, ClaUnidad
)t2
On t2.ClaArti = t1.ClaArti
And t2.ClaUnidad = t1.ClaUnidad
Group By t1.ClaArti, t1.ClaUnidad
Leer las respuestas