Hola que tal, Bueno Resulta que estoy queriendo hacer un Procedimiento
almacenado para ejecutar una Referencia Cruzada, tengo la siguiente consulta
que me funciona bien
WITH Ordenar(Item, Descripcion, Abrev, Meses, Valor, Fecha) AS
(
SELECT
b.Item As Item, b.Descripcion As Descripcion, u.abrev As Abrev,
MONTH(oc.FechReg) AS Meses, avg(dc.CostoUnit) AS Valor, '22/10/2009'
From
Bien b, DetalleOC dc, OrdenC oc, UnidadMedida u
Where
dc.CodBien = B.Codigo And B.Unidad = U.Codigo
And dc.CodOC=oc.Codigo And oc.Estado<>0
And year(oc.FechReg) 09
And month(oc.FechReg)>7
Group By
MONTH (oc.FechReg), B.Item, B.Descripcion, U.Abrev
)
SELECT * From Ordenar
PIVOT(sum(Valor) FOR Meses IN ([7],[8],[9])) AS P
Pero cuando quiero hacerlo en un Procedimiento Almacenado que me reciba los
parametros no me funciona:
ALTER PROCEDURE [dbo].[sp_PromXMeses]
@nvcFecha nvarchar(25),
@intAnio int,
@intMes0 int,
@intMes1 int,
@intMes2 int,
@intMes3 int
AS
BEGIN
WITH Ordenar(Item, Descripcion, Abrev, Cast(Meses), Valor, Fecha) AS
(
SELECT
b.Item As Item, b.Descripcion As Descripcion, u.abrev As Abrev,
MONTH(oc.FechReg) AS Meses, avg(dc.CostoUnit) AS Valor, @nvcFecha
From
Bien b, DetalleOC dc, OrdenC oc, UnidadMedida u
Where
dc.CodBien = B.Codigo And B.Unidad = U.Codigo
And dc.CodOC=oc.Codigo And oc.Estado<>0
And year(oc.FechReg)=@intAnio
And month(oc.FechReg)>@intMes0
Group By
MONTH (oc.FechReg), B.Item, B.Descripcion, U.Abrev
)
SELECT * From Ordenar
PIVOT(sum(Valor) FOR Meses IN ([@intMes1],[@intMes2],[@intMes3])) AS P
END
Me salen los siguientes errores:
Msg 8114, Level 16, State 1, Procedure sp_PromXMeses, Line 16
Error al convertir el tipo de datos nvarchar a int.
Msg 473, Level 16, State 1, Procedure sp_PromXMeses, Line 16
Se ha proporcionado el valor incorrecto "@intMes1" en el operador PIVOT.
Como haria ese Procedimiento, o en que me estoy equivocando??
Leer las respuestas