pivot pero con fecha movible
Publicado por kinetic_brain (67 intervenciones) el 09/06/2010 00:02:59
Tengo una duda estoy construyendo una tabla pivot, donde muestro los periodos en la cabecera de la tabla de la fecha actual y 4 meses hacia atras.
primero obtengo de la tabla 1 la tabla ANALIZAR donde a la fecha que esta en formato yyyymmdd le hago un left(fecha,6) obtengo 201006 y ha esta tabla (ANALIZAR) le corro la siguiente query.
SELECT P1.*, cast((P1.[ACTUAL-3]+P1.[ACTUAL-2]+P1.[ACTUAL-1]+P1.[ACTUAL]) as int)AS AÑO_TOTAL
from (select distinct USUARIO,TELEFONO,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-120, 112),6) THEN P.VALOR_REB ELSE 0 END)AS [ACTUAL-3] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-90, 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL-2] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-60, 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL-1] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE(), 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL]
FROM ANALIZAR P
group by P.USUARIO,P.TELEFONO) as P1
order by USUARIO
Consulta como puedo modificar la query para que despues del WHEN solo tome los meses, yo lo tengo asi
left(CONVERT(CHAR(8), GETDATE()-30, 112),6) ---> esto me indicaria la fecha desde hoy y 4 meses asi atras, el problema es que no es exacta ya que me deja registros fuera porque me esta tomando por ejemplo del día 8 de Junio 30 días hacia atras, no cubriendo la totalidad de Mayo. como puedo trabajar la fecha. Por favor.
primero obtengo de la tabla 1 la tabla ANALIZAR donde a la fecha que esta en formato yyyymmdd le hago un left(fecha,6) obtengo 201006 y ha esta tabla (ANALIZAR) le corro la siguiente query.
SELECT P1.*, cast((P1.[ACTUAL-3]+P1.[ACTUAL-2]+P1.[ACTUAL-1]+P1.[ACTUAL]) as int)AS AÑO_TOTAL
from (select distinct USUARIO,TELEFONO,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-120, 112),6) THEN P.VALOR_REB ELSE 0 END)AS [ACTUAL-3] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-90, 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL-2] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE()-60, 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL-1] ,
SUM(CASE P.FECHA WHEN left(CONVERT(CHAR(8), GETDATE(), 112),6) THEN P.VALOR_REB ELSE 0 END) AS [ACTUAL]
FROM ANALIZAR P
group by P.USUARIO,P.TELEFONO) as P1
order by USUARIO
Consulta como puedo modificar la query para que despues del WHEN solo tome los meses, yo lo tengo asi
left(CONVERT(CHAR(8), GETDATE()-30, 112),6) ---> esto me indicaria la fecha desde hoy y 4 meses asi atras, el problema es que no es exacta ya que me deja registros fuera porque me esta tomando por ejemplo del día 8 de Junio 30 días hacia atras, no cubriendo la totalidad de Mayo. como puedo trabajar la fecha. Por favor.
Valora esta pregunta


0