我构建了一个sql函数,该函数从表中获取一些值
像DS_Consultor,No_Periodo和No_HORAS_REG这样的函数可用于计算每个工人每月的总工作时间,然后使用此函数计算每个条目的工作百分比:
ALTER FUNCTION [dbo].[CAL]
(
@EMP NVARCHAR(70),
@PER NVARCHAR(50),
@HORAS DECIMAL(18,1)
)
RETURNS @RES TABLE
(
RES DECIMAL(18, 1)
)
AS
BEGIN
DECLARE @TEMPTABLE TABLE
(
DS_CONSULTOR NVARCHAR(70),
NO_PERIODO NVARCHAR(50),
RECUENTO DECIMAL(18,1)
)
INSERT @tempTable
SELECT OC.DS_CONSULTOR, OC.NO_PERIODO, SUM(OC.NO_HORAS_REG) AS RECUENTO
FROM Occupation OC
GROUP BY OC.DS_CONSULTOR, OC.NO_PERIODO
INSERT @RES
SELECT @HORAS/T1.RECUENTO AS RES
FROM @tempTable T1
WHERE T1.DS_CONSULTOR=@EMP AND T1.NO_PERIODO=@HORAS
RETURN
END
但是我无法添加计算列所需的列参数
SELECT cal.RES
FROM Occupation OC
CROSS APPLY CAL(DS_CONSULTOR, NO_PERIODO, NO_HORAS_REG)--This outputs 'Error
converting data type nvarchar to numeric.'
参数是否有问题?或者是函数inpu / output?