SQL Server - Problema al dividir por fechas el total de cada mes

 
Vista:

Problema al dividir por fechas el total de cada mes

Publicado por Alejandro (52 intervenciones) el 12/12/2013 19:08:16
Hola que tal, tengo un problema con una consulta que estoy realizando para sacar un reporte de comparativos de cobranza de cada mes y debe ser mas o menos asi.

Periodo Monto Total del 1 al 16 17 al 24 del 25 al 30

Enero 2013 $ $ $ $
Febrero 2013
Marzo 2013
Abril 2013
Mayo 2013
Junio 2013
Julio 2013
Agosto 2013
Septiembre 2013
Octubre 2013
Noviembre 2013
Diciembre 2013

en el store que estoy haciendo hago un datediff para dividir el monto entre esas fechas pero me salen null aparte que avienta demasiandos registros de los 12 que deben de ser de hecho el periodo y el monto total me funciona bien pero al meter del datediff es no me saca los datos correctos de hecho intente cambiando las fechas pero no me llega la informacion correcta, no se si este haciendo algo mal o de plano cambiar mi idea de la consulta para sacar esa informacion, espero me puedan ayudar a darme una idea de lo que estoy haciendo gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Select Periodo = (Case When Month(Fecha) = 1 Then 'Enero' + ' ' +  Cast(Year(Fecha) as varchar(4))
				           When Month(Fecha) = 2 Then 'Febrero' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 3 Then 'Marzo' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 4 Then 'Abril' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 5 Then 'Mayo' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 6 Then 'Junio' + ' ' + Cast(Year(Fecha) as varchar(4))
				     	   When Month(Fecha) = 7 Then 'Julio' + ' ' + Cast(Year(Fecha) as varchar(4))
					   When Month(Fecha) = 8 Then 'Agosto' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 9 Then 'Septiembre' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 10 Then 'Octubre' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 11 Then 'Noviembre' + ' ' + Cast(Year(Fecha) as varchar(4))
                                           When Month(Fecha) = 12 Then 'Diciembre' + ' ' + Cast(Year(Fecha) as varchar(4))
                           else '' end),
           Sum(Monto) as Monto,
 
           Uno = (Case When datediff(d, Fecha, getdate()) Between 1 and 16 then Monto else null end)
 
	  From tbMovtosDet
     where Year(Fecha) = @intYear
       and Estatus not in (9)
  Group by Month(Fecha), Year(Fecha), (Case When datediff(d, Fecha, getdate()) Between 1 and 16 then Monto else null end)
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: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Problema al dividir por fechas el total de cada mes

Publicado por Isaias (4558 intervenciones) el 12/12/2013 19:33:07
En esta línea:

Uno = (Case When datediff(d, Fecha, getdate()) Between 1 and 16 then Monto else null end)

¿Dónde haces el SUM?
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

Problema al dividir por fechas el total de cada mes

Publicado por Alejandro (52 intervenciones) el 12/12/2013 19:40:40
Ah no este ese tanbien lo hice pero me sale el mismo resultado null la vdd no entiendo porque
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

Problema al dividir por fechas el total de cada mes

Publicado por Alejandro (52 intervenciones) el 13/12/2013 23:02:23
Listo ya pude sacar mi problema les comparto el codigo por si acaso alguien llega a tener el mismo problema o tengan algo parecido. Saludos.

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
37
38
39
40
41
42
43
Declare
@Mes int,
@Year int
 
Select
@mes = 1,
@Year = 2013
 
Declare @tblCobranza Table(
        Periodo varchar(20),
        Total decimal(18,2),
        Q1 decimal(18,2),
        Q2 decimal(18,2),
        Q3 decimal(18,2))
 
	While @mes < 13
		Begin
                    Insert Into @tblCobranza(Periodo, Total, Q1, Q2, Q3)
                    Select Periodo = (Case When @mes = 1 Then 'Enero' + ' ' +  Cast(Year(datFechaMovto) as varchar(4))
						               When @mes = 2 Then 'Febrero' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 3 Then 'Marzo' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 4 Then 'Abril' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 5 Then 'Mayo' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 6 Then 'Junio' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
				     	                       When @mes = 7 Then 'Julio' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
					 	               When @mes = 8 Then 'Agosto' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 9 Then 'Septiembre' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 10 Then 'Octubre' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 11 Then 'Noviembre' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               When @mes = 12 Then 'Diciembre' + ' ' + Cast(Year(datFechaMovto) as varchar(4))
                                                               else '' end),
                             Sum(dblMontoMovto),
                             Q1 = (Select Sum(dblMontoMovto) From tbMovtosDet Where day(datFechaMovto) <= 16 and                    Month(datFechaMovto) = @Mes   and  Year(datFechaMovto) = @Year),
                             Q2 = (Select Sum(dblMontoMovto) From tbMovtosDet Where day(datFechaMovto) >= 17 and day(datFechaMovto) <= 24 and Month(datFechaMovto) = @Mes and  Year(datFechaMovto) = @Year),
                             Q3 = (Select Sum(dblMontoMovto) From tbMovtosDet Where day(datFechaMovto) >= 25 and day(datFechaMovto) <= 31 and Month(datFechaMovto) = @Mes  and  Year(datFechaMovto) = @Year)
          From tbMovtosDet
         Where Month(datFechaMovto) = @Mes and Year(datFechaMovto) = @Year
	  Group by Month(datFechaMovto), Year(datFechaMovto)
	  Order by Month(datFechaMovto) asc
      Set @mes = @mes + 1
      end
 
     Select * from @tblCobranza
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