** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y Otros sistemas
  Mensajes nuevos Mensajes nuevos RSS - Crear Vista con SET DATEFIRST en SQL SERVER
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCrear Vista con SET DATEFIRST en SQL SERVER

 Responder Responder
Autor
Mensaje
Cristobal.A Ver desplegable
Habitual
Habitual
Avatar

Unido: 15/Julio/2010
Localización: Chile
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Tema: Crear Vista con SET DATEFIRST en SQL SERVER
    Enviado: 23/Febrero/2016 a las 22:53
Estimados

Les detallo la query que necesito que se ejecute en una vista en SQL SERVER, el problema es que no me al agregarla no me acepta el "SET DATEFIRST 1" y si no lo agrego las fechas que caen día domingo la semana me las arroja para la siguiente.

SET DATEFIRST 1

SELECT
HIDROCROM.dbo.OT.FechaTT AS Fecha,
DATEPART(WW,HIDROCROM.dbo.OT.FechaTT) AS Semana,
DATEPART(YY,HIDROCROM.dbo.OT.FechaTT) AS Ano,
CASE
WHEN HIDROCROM.dbo.OT.TamanoComponente = 'ME' THEN 'MENOR'
WHEN HIDROCROM.dbo.OT.TamanoComponente = 'MA' THEN 'MAYOR'
ELSE ''
END AS Tamano,
'OT Vencidas (Q)' as Item,
Count(HIDROCROM.dbo.OT.OT) as Valor

From
HIDROCROM.dbo.OT

Where
HIDROCROM.dbo.OT.FechaTT > HIDROCROM.dbo.OT.FechaEstimadaTT AND
HIDROCROM.dbo.OT.FechaTT IS NOT NULL AND
HIDROCROM.dbo.OT.FechaEstimadaTT IS NOT NULL

GROUP BY

HIDROCROM.dbo.OT.FechaTT,
DATEPART(WW,HIDROCROM.dbo.OT.FechaTT),
DATEPART(YY,HIDROCROM.dbo.OT.FechaTT),
CASE
WHEN HIDROCROM.dbo.OT.TamanoComponente = 'ME' THEN 'MENOR'
WHEN HIDROCROM.dbo.OT.TamanoComponente = 'MA' THEN 'MAYOR'
ELSE ''
END

Arriba
Cristobal.A Ver desplegable
Habitual
Habitual
Avatar

Unido: 15/Julio/2010
Localización: Chile
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Enviado: 26/Febrero/2016 a las 16:25
Pues bien pude resolver el asunto.
Como las vistas de SQL Server no aceptan "SET" cree una función que a la fecha si cae un día domingo le reste  uno a la semanana. Y bueno como este problema también lo tendría si en el futuro si quisiera tener el numero de la seman donde para sql server domingo = 1 aproveché el impulso y crée la función para el día de la semana.
Tengo que aclarar que estas es primera vez que creo funciones en sql server por lo tanto si hay alguien que crée que el código puede ser mejorado bienvenido sean sus aportes para poder mejora y para que otros que puedan tomar este código no tenga inconvenientes


CREATE FUNCTION NumSem(@Fecha DATETIME)
RETURNS int

AS

BEGIN

    RETURN
    (CASE
        WHEN DATEPART(DW,@Fecha)= 1 THEN DATEPART(WW,@Fecha-7)
        WHEN DATEPART(DW,@Fecha)= 2 THEN DATEPART(WW,@Fecha)
        WHEN DATEPART(DW,@Fecha)= 3 THEN DATEPART(WW,@Fecha)
        WHEN DATEPART(DW,@Fecha)= 4 THEN DATEPART(WW,@Fecha)
        WHEN DATEPART(DW,@Fecha)= 5 THEN DATEPART(WW,@Fecha)
        WHEN DATEPART(DW,@Fecha)= 6 THEN DATEPART(WW,@Fecha)
        WHEN DATEPART(DW,@Fecha)= 7 THEN DATEPART(WW,@Fecha)
        END
     )

END;
GO


CREATE FUNCTION [dbo].[DiaSem](@Fecha DATETIME)
RETURNS int

AS

BEGIN

    RETURN
    (CASE
        WHEN DATEPART(DW,@Fecha)= 1 THEN 7
        WHEN DATEPART(DW,@Fecha)= 2 THEN 1
        WHEN DATEPART(DW,@Fecha)= 3 THEN 2
        WHEN DATEPART(DW,@Fecha)= 4 THEN 3
        WHEN DATEPART(DW,@Fecha)= 5 THEN 4
        WHEN DATEPART(DW,@Fecha)= 6 THEN 5
        WHEN DATEPART(DW,@Fecha)= 7 THEN 6
        END
     )

END;
Arriba
Cristobal.A Ver desplegable
Habitual
Habitual
Avatar

Unido: 15/Julio/2010
Localización: Chile
Estado: Sin conexión
Puntos: 146
Enlace directo a este mensaje Enviado: 11/Julio/2017 a las 18:50
Este caso está cerrado
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable