DATEName

23/02/2006 - 16:21 por nelva | Informe spam
TEngo un procedimiento almacenado que me muestra las reproducciones
(fotocopias) que se hicieron en un periodo determinado,
yo uso datename para mostrar por semana o por mes o por qq.

pero para mostralo para cada caso ( ww, qq, etc) debo hacer un porcedimiento
para cada uno.

podria yo mandarle los parametros del datename a partir de un dato que el
usuario ingrese

Datename(@name,rep_fecha)
CREATE PROCEDURE dbo.PCA_REPRODUCCION_WEEK(@FECHAINI datetime,
@FECHAFIN datetime,
@TIPOREP numeric(10),@tiempo char(2))
AS SELECT CASE WHEN (datename(@tiempo, r.rep_fecha) = 1) THEN
ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaI, CASE WHEN (datename(@tiempo,
r.rep_fecha) = 2)
THEN ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaII,
CASE WHEN (datename(@tiempo, r.rep_fecha) = 3) THEN
ISNULL(SUM(rt.rts_cantidad), 0)
END AS SemanaIII, CASE WHEN (datename(@tiempo,
r.rep_fecha) = 4) THEN ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaIV,
dbo.Direcciones.DIR_Nombre, dbo.Funcionarios.DIR_ID
FROM dbo.Reproduccion r INNER JOIN
dbo.Rep_TServicio rt ON r.Rep_Id = rt.Rep_Id INNER
JOIN
dbo.Funcionarios ON r.Fun_Id = dbo.Funcionarios.FUN_ID
INNER JOIN
dbo.Direcciones ON dbo.Funcionarios.DIR_ID dbo.Direcciones.DIR_ID
WHERE (rt.Trep_Id = @TIPOREP) AND (r.Rep_Fecha >= @FECHAINI) AND
(r.Rep_Fecha <= @FECHAFIN)
GROUP BY dbo.Direcciones.DIR_Nombre, dbo.Funcionarios.DIR_ID, r.Rep_Fecha
GO

Alma Alicia Gutierrez Garcia
Unidad de Sistemas, CDA.
 

Leer las respuestas

#1 Maxi
23/02/2006 - 17:40 | Informe spam
Una opcion en SQL2000 es usar Sql_dinamico (con todos los riesgos que ello
lleva claro ;-))
En sql2005 podes revisar el comando Pivot


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"nelva" escribió en el mensaje
news:%
TEngo un procedimiento almacenado que me muestra las reproducciones
(fotocopias) que se hicieron en un periodo determinado,
yo uso datename para mostrar por semana o por mes o por qq.

pero para mostralo para cada caso ( ww, qq, etc) debo hacer un
porcedimiento
para cada uno.

podria yo mandarle los parametros del datename a partir de un dato que el
usuario ingrese

Datename(@name,rep_fecha)
CREATE PROCEDURE dbo.PCA_REPRODUCCION_WEEK(@FECHAINI datetime,
@FECHAFIN datetime,
@TIPOREP numeric(10),@tiempo char(2))
AS SELECT CASE WHEN (datename(@tiempo, r.rep_fecha) = 1) THEN
ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaI, CASE WHEN
(datename(@tiempo,
r.rep_fecha) = 2)
THEN ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaII,
CASE WHEN (datename(@tiempo, r.rep_fecha) = 3) THEN
ISNULL(SUM(rt.rts_cantidad), 0)
END AS SemanaIII, CASE WHEN (datename(@tiempo,
r.rep_fecha) = 4) THEN ISNULL(SUM(rt.rts_cantidad), 0) END AS SemanaIV,
dbo.Direcciones.DIR_Nombre, dbo.Funcionarios.DIR_ID
FROM dbo.Reproduccion r INNER JOIN
dbo.Rep_TServicio rt ON r.Rep_Id = rt.Rep_Id INNER
JOIN
dbo.Funcionarios ON r.Fun_Id =
dbo.Funcionarios.FUN_ID
INNER JOIN
dbo.Direcciones ON dbo.Funcionarios.DIR_ID > dbo.Direcciones.DIR_ID
WHERE (rt.Trep_Id = @TIPOREP) AND (r.Rep_Fecha >= @FECHAINI) AND
(r.Rep_Fecha <= @FECHAFIN)
GROUP BY dbo.Direcciones.DIR_Nombre, dbo.Funcionarios.DIR_ID, r.Rep_Fecha
GO

Alma Alicia Gutierrez Garcia
Unidad de Sistemas, CDA.


Preguntas similares