none
Consulta --- Orden Fecha y Between RRS feed

  • Pregunta

  • Buenas Tardes, Tengo 1 consulta , bueno en realidad 2 , y es que si alguien me puede ayudar en esto:

    
    CREATE PROCEDURE REPORTE_CANTIDAD_RESERVAS_FUTURO_MES ----futuro mes
    @FECHAINI DATE, --Parametro Ingreso
    @FECHAFIN DATE --Parametro Ingreso
    as
    DECLARE @RESERVAS_FUTURAS TABLE(
    Mes varchar(6),
    Total_reserv decimal(18,0)
    );
    INSERT INTO @RESERVAS_FUTURAS
    select  RTRIM(LTRIM(Right(Cast(Year(rs.FechaLlegada) As Char(4)),2))) + '-' +  CONVERT (char (3), DATENAME(month, rs.FechaLlegada))as Mes , 
    COUNT(*) Cantidad_Reservas
    from Reserva rs
    where (rs.FechaCreacion between @FECHAINI and  @FECHAFIN) and  
    (rs.FechaLlegada>@FECHAFIN and rs.FechaMaxLlegada>@FECHAFIN) and  EstadoReserva!='Cancelled'
    group by RTRIM(LTRIM(Right(Cast(Year(rs.FechaLlegada) As Char(4)),2))) + '-' +  CONVERT (char (3), DATENAME(month, rs.FechaLlegada))

    Insert into @RESERVAS_FUTURAS
    select 
    'TOTAL',
    SUM(Total_reserv)
    from @RESERVAS_FUTURAS
    select Mes , Total_reserv  FROM @RESERVAS_FUTURAS
    GROUP BY  Total_reserv , Mes
    ORDER by MES asc

    EXEC REPORTE_CANTIDAD_RESERVAS_FUTURO_MES '01/05/2019','01/05/2019'

    PRIMERA CONSULTA:

    Yo quiero que la fecha que tome sea solo 1 día que es el "01/05/2019" hasta "01/05/2019" pero al poner esa fecha no me sale ningún registro, caso contrario cuando pongo "01/05/2019" hasta el "02/05/2019" si me bota registros ... Quisiera saber si existe una solución para que solo me tome 1 dia utilizando rangos ..

    Por otro lado...

    SEGUNDA CONSULTA:

    Cuando ingreso "01/05/2019" hasta "30/05/2019" me botan registros normales pero no ordenados segun los meses siguientes por ejemplo:

    Resultado que me sale:

    Fecha | Cantidad_Reservas

    Ago-19  | 59

    Dic-19 | 6

    Jun-19  | 100

    Oct-19  | 20

    Jul-19 | 220

    Enero-20 |500

    Y lo que quisiera es esto :

    Jun-19 | 100

    Jul-19 | 220

    Ago-19  | 59

    Oct-19  | 20

    Dic-19 | 6

    Enero-20 |500

    Agradecería su apoyo . Saludos

    viernes, 31 de mayo de 2019 0:34

Todas las respuestas

  • Hola Fabian166:

    Es difícil saber exactamente, porque no hace cosas con tus datos cuando no tenemos ni los datos ni la definición de las tablas.

    CREATE TABLE reserva (FechaLlegada DATE , FechaCreacion DATE , FechaMaxLlegada DATE , EstadoReserva VARCHAR(20) ); go insert into reserva ( FechaLlegada , FechaCreacion , FechaMaxLlegada , EstadoReserva ) VALUES ('20190502','20190501','20190502',null), ('20190502','20190402','20190502',null), ('20190503','20190403','20190503',null), ('20190504','20190404','20190504',null), ('20190505','20190405','20190505',null), ('20190506','20190406','20190506',null), ('20190507','20190407','20190507',null), ('20190508','20190408','20190508',null); go DECLARE @fechaini DATE= '01/05/2019', @fechafin DATE= '01/05/2019'; SELECT RIGHT((concat(YEAR(rs.FechaLlegada), '-', CONVERT(CHAR(3), DATENAME(month, rs.FechaLlegada)))), 6) AS Mes , COUNT(*) Cantidad_Reservas FROM Reserva rs WHERE (rs.FechaCreacion >= @FECHAINI AND rs.FechaCreacion <= @FECHAFIN) AND (rs.FechaLlegada > @FECHAFIN AND rs.FechaMaxLlegada > @FECHAFIN) AND (EstadoReserva <> 'Cancelled' OR EstadoReserva IS NULL) GROUP BY RIGHT((concat(YEAR(rs.FechaLlegada), '-', CONVERT(CHAR(3),

    DATENAME(month, rs.FechaLlegada)))), 6);

    Para la primera parte de tu consulta, te he reformado un poco la query, y si contempla el día 01.

    Es importante saber si el campo es tipo date, u otro tipo de fecha/hora, y saber si acepta nulos.

    Salida

    Para la segunda parte, lo más simple, es en la variable de tabla, pon una columna más que sea el mes en número, pero no le des salida en la select y utiliza ese número de mes en el ORDER BY mes.

    • Propuesto como respuesta eRiver1 viernes, 31 de mayo de 2019 18:29
    • Marcado como respuesta Fabian166 sábado, 1 de junio de 2019 20:13
    • Desmarcado como respuesta Fabian166 sábado, 1 de junio de 2019 20:13
    viernes, 31 de mayo de 2019 4:51
  • Deleted
    • Propuesto como respuesta eRiver1 viernes, 31 de mayo de 2019 18:29
    viernes, 31 de mayo de 2019 12:01
  • Gracias, si me ayudo la primera parte... por otro lado , para la segunda parte , hice lo que me has dicho, lo ordena por mes y esta bien , pero lo que pasa es que por ejemplo si existe un registro del Enero del 2020 aparece ese registro como primer valor ya que como lo ordeno por meses , me toma enero como 1 . Es decir que quiero que me muestre un orden tanto de mes como de año , que luego del año presente se reinicie el conteo de meses. por ejemplo:

    Este resultado me sale

    Fecha|Cantidad_Reserva

    Enero-20 |500

    Jun-19 | 100

    Jul-19 | 220

    Ago-19  | 59

    Oct-19  | 20

    Dic-19 | 6

    Y yo quisiera esto :

    Jun-19 | 100

    Jul-19 | 220

    Ago-19  | 59

    Oct-19  | 20

    Dic-19 | 6

    Enero-20 |500

    Espero su respuesta.

    sábado, 1 de junio de 2019 19:22
  • Entonces lo tienes fácil, incluye también el año.....

    domingo, 2 de junio de 2019 6:35