¿SP para una tabla de Dimension Tiempo?

04/06/2008 - 12:28 por ArraY | Informe spam
¿Alguno me puede echar una manilla? me gustaria crear un sp que se
ejecutara en un DTS para que segun el año actual, me genere inserte en
la tabla tiempo DiaSemana,Mes,Año, Semana del Año...

Se que se haria con DATEPART y DATENAME.con un select similar a
esto:

INSERT INTO Tiempo
SELECT DISTINCT FECHA=O.FecRec, DiaSemanaÚTENAME(dw,O.FecRec),
MES = DatePart(mm,O.FecRec),Anio = DatePart(yy,O.fecRec),
Cuatrimestre =DatePart(qq,O.fecRec),
DIAANIO= DatePart(dy,O.FecRec),
MESANIO = DATENAME(month, O.fecRec) + '_' + DATENAME(year,O.fecRec),
SEMANAANIOÚTEPART(wk,O.fecRec)
FROM Ventas O
WHERE O.FecRec IS NOT NULL

¿Pero y en un sp para el año en cuestion? Es decir quiero todos los
datos que vienen en el select de todas las fechas del añopara que
yo al hacer la consulta...a ventas me coga las del join

Gracias

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
04/06/2008 - 16:20 | Informe spam
Este artículo le puede servir de inspiración:

The Time Dimension
http://sqljunkies.com/WebLog/enigma...4/940.aspx

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"ArraY" wrote:

¿Alguno me puede echar una manilla? me gustaria crear un sp que se
ejecutara en un DTS para que segun el año actual, me genere inserte en
la tabla tiempo DiaSemana,Mes,Año, Semana del Año...

Se que se haria con DATEPART y DATENAME.con un select similar a
esto:

INSERT INTO Tiempo
SELECT DISTINCT FECHA=O.FecRec, DiaSemanaÚTENAME(dw,O.FecRec),
MES = DatePart(mm,O.FecRec),Anio = DatePart(yy,O.fecRec),
Cuatrimestre =DatePart(qq,O.fecRec),
DIAANIO= DatePart(dy,O.FecRec),
MESANIO = DATENAME(month, O.fecRec) + '_' + DATENAME(year,O.fecRec),
SEMANAANIOÚTEPART(wk,O.fecRec)
FROM Ventas O
WHERE O.FecRec IS NOT NULL

¿Pero y en un sp para el año en cuestion? Es decir quiero todos los
datos que vienen en el select de todas las fechas del añopara que
yo al hacer la consulta...a ventas me coga las del join

Gracias

Respuesta Responder a este mensaje
#2 Salvador Ramos
04/06/2008 - 21:37 | Informe spam
Hola,

Te recomiendo que te hagas un procedimiento almacenado que te genere filas
para un rango de fechas, y que reciba como parámetros fecha desde y fecha
hasta.

En tu caso, si no hay ventas de una fechas esa fila no estaría en la tabla
de dimensión tiempo. Pero si que puede haber compras u otros hechos en dicha
fecha. Debes tener la seguridad que en la tabla tiempo existen todas las
fechas, para evitar problemas.

Un saludo
Salvador Ramos
Solid Quality Mentors (http://www.solidq.com)

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
Visita mi nuevo blog: www.sqlserversi.com


"ArraY" escribió en el mensaje
news:
¿Alguno me puede echar una manilla? me gustaria crear un sp que se
ejecutara en un DTS para que segun el año actual, me genere inserte en
la tabla tiempo DiaSemana,Mes,Año, Semana del Año...

Se que se haria con DATEPART y DATENAME.con un select similar a
esto:

INSERT INTO Tiempo
SELECT DISTINCT FECHA=O.FecRec, DiaSemanaÚTENAME(dw,O.FecRec),
MES = DatePart(mm,O.FecRec),Anio = DatePart(yy,O.fecRec),
Cuatrimestre =DatePart(qq,O.fecRec),
DIAANIO= DatePart(dy,O.FecRec),
MESANIO = DATENAME(month, O.fecRec) + '_' + DATENAME(year,O.fecRec),
SEMANAANIOÚTEPART(wk,O.fecRec)
FROM Ventas O
WHERE O.FecRec IS NOT NULL

¿Pero y en un sp para el año en cuestion? Es decir quiero todos los
datos que vienen en el select de todas las fechas del añopara que
yo al hacer la consulta...a ventas me coga las del join

Gracias
Respuesta Responder a este mensaje
#3 Miguel Egea
04/06/2008 - 21:40 | Informe spam
Si es 2005 este select (escrito al vuelo) te devuelve un rango de fecha

Declare @fechaDesde datetime;
Declare @fechahasta datetime;
set @fechadesde=getdate()-365;
select @fechahasta=getdate();

with TodasLasFechas (fecha) as (
select @fechaDesde fecha
union all
select Fecha+1 from Todaslasfechas where fecha<@fechahasta
)
select * from todaslasfechas option(maxrecursion 0);

Saludos
Miguel Egea

"ArraY" wrote in message
news:
¿Alguno me puede echar una manilla? me gustaria crear un sp que se
ejecutara en un DTS para que segun el año actual, me genere inserte en
la tabla tiempo DiaSemana,Mes,Año, Semana del Año...

Se que se haria con DATEPART y DATENAME.con un select similar a
esto:

INSERT INTO Tiempo
SELECT DISTINCT FECHA=O.FecRec, DiaSemanaÚTENAME(dw,O.FecRec),
MES = DatePart(mm,O.FecRec),Anio = DatePart(yy,O.fecRec),
Cuatrimestre =DatePart(qq,O.fecRec),
DIAANIO= DatePart(dy,O.FecRec),
MESANIO = DATENAME(month, O.fecRec) + '_' + DATENAME(year,O.fecRec),
SEMANAANIOÚTEPART(wk,O.fecRec)
FROM Ventas O
WHERE O.FecRec IS NOT NULL

¿Pero y en un sp para el año en cuestion? Es decir quiero todos los
datos que vienen en el select de todas las fechas del añopara que
yo al hacer la consulta...a ventas me coga las del join

Gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida