Bnos dias... espero me puedan ayudar... me pasa que me estoy confundiendo en mandar los parametros...
En realidad tengo 2 problemas con la misma consulta... pero el primer problema lo solucione... y ahora esta solucion es la ke me da este error de OverFlow de Fecha... a ver si pueder ayudarme... vean tengo el siguiente Sp
Sp: [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas] @FechaVta
... la cual me reportara las Cuotas que se les da a cada Vendedor para cada producto durante un respectivo periodo (mes) y las Vtas Acumuladas hasta una Fecha consultada (@FechaVta)
Código:
CREATE [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas]
(
@FechaVta as Datetime
)
Declare @ListaProd --> Me Obtendra la Lista de los tamaños de los Prod Termi.
set @ListaProd = [dbo].[SBO_ListaTamanosProductosTerminados]()
Select [Cod Emp]
, [Nombres]
, [Tip Reg] = 'CUOTA'
, @ListaProd
from
( Select
[Cod Emp] = U_VAR_CoEmp -- Codigo del Empleado
, [Nombres] = U_VAR_NameEm -- Nombre del Empleado
, [TamProd] = U_VAR_TamPro -- Tamano de Producto
, [Cuota] = U_VAR_ValCuo -- VALOR de CUOTA
from [@VAR_EMPCUO] uo
inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
where ta.U_VAR_CuoPe = Month(@FechaVta)
) as k Pivot(sum([Cuota]) FOR [TamProd] in (@ListaProd))PB
El primer problema me sucede aqui... al aplicar el PIVOT a la consulta... ke existe un error de sintaxis cerca de "(@ListaProd))PB"... ahora porque me daba ese error no se, si todo esta en su sitio o me falta algo mas... bueno eso lo solucione metiendo toda la consulta a una variable nVarchar(MAX) y ejecutarla dinamicamente con "EXEC sp_executesql"
de tal forma:
Código:
Declare @SqlCuota nVarchar(MAX)
set @SqlCuota =
'
Select [Cod Emp]
, [Nombres]
, [Tip Reg] = ' + char(39) + 'CUOTA' + char(39) + '
, ' + @ListaProd + '
from
( Select
[Cod Emp] = U_VAR_CoEmp
, [Nombres] = U_VAR_NameEm
, [TamProd] = U_VAR_TamPro
, [Cuota] = U_VAR_ValCuo
from [@VAR_EMPCUO] uo
inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
where ta.U_VAR_CuoPe = Month(' + @FechaVta+ ')
) as k Pivot(sum([Cuota]) FOR [TamProd] in (' + @ListaProd+ '))PB
'
y Listo solucione mi primer problema :D
Ahora si, esa consulta quiero unirla... "union all"... con mi otra consulta que obtendra la Venta Acumulada hasta la fecha Indicada en el Proc Actual (@FechaVta)
Código:
Declare @SqlVtaAcu
Set @SqlVtaAcu =
'Select
[Cod Emp]
, [Nombres]
, [Tip Reg] = ' + char(39) + 'Vta Acumulada' + char(39)+ '
, '+ @ListaProd + '
from
( Select
[Cod Emp] = U_VAR_CoEmp
, [Nombres] = U_VAR_NameEm
, [TamProd] = U_VAR_TamPro
, [Vta Acu] = [dbo].[SBO_VAR_CalcularVentaAcumulada]('
+ char(39) + @Fechita + char(39) +
', uo.U_VAR_CoEmp, ta.U_VAR_TamPro)
from [@VAR_EMPCUO] uo
inner join [@VAR_CUOTA] ta on uo.Code = ta.Code
where ta.U_VAR_CuoPe = ' + Month(@FechaVta) + '
) as k Pivot(sum([Vta Acu]) FOR [TamProd] in (' + @ListaProd + '))PB
order by [Cod Emp], [Tip Reg]
'
set @SqlCuota = @SqlCuota + ' union all ' + @SqlVtaAcu
EXEC sp_executesql @SqlCuota
explicacion:
[dbo].[SBO_VAR_CalcularVentaAcumulada] es una funcion que me devuelve un "double" y
le mando 3 parametros (@FechaVta , CodEmp, TamanoProd)... ahora es aqui donde sale mi error de OverFlow, cuando le mando al procedimiento original una fecha cualquiera.
Código:
exec [dbo].[SBO_VAR_REP_VEN_ReporteCuotas_VentasAcumuladas] '2008/05/20'
me sale error de OverFlow... ahora si podrian decirme porke me sale el error este, a menos kise ser lo mas explicativo posible... me ayudarian mucho, conste que todos los parametros "fecha" son de tipo "datetime".
Gracias de antemano por su apoyo. Saludos.