TSQL程序中无法识别SQL标量函数元素

TSQL程序中无法识别SQL标量函数元素,tsql,user-defined-functions,Tsql,User Defined Functions,我有一个包含两个元素的db2输入表:loan_number,debt_to_income;此表的名称为Input\U table。我试图通过对该表运行SQL程序来测试该函数。问题是,由于某种原因,SQL程序中无法识别函数的元素,也许我已经关注了很久了?我需要验证表中的输出是否会按debt_to_income字段的顺序输出 以下是功能代码: ALTER FUNCTION [dbo].[FN_DTI_BANDS] ( -- the parameters for the function h

我有一个包含两个元素的db2输入表:loan_number,debt_to_income;此表的名称为Input\U table。我试图通过对该表运行SQL程序来测试该函数。问题是,由于某种原因,SQL程序中无法识别函数的元素,也许我已经关注了很久了?我需要验证表中的输出是否会按debt_to_income字段的顺序输出

以下是功能代码:

 ALTER FUNCTION [dbo].[FN_DTI_BANDS]
(
    -- the parameters for the function here
    @FN_DTI_Band            decimal(4,3)
     )
RETURNS varchar(16)
AS
BEGIN

declare @Return varchar(16)

select @Return =

        Case
        when @FN_DTI_Band is NULL then ' Missing'
        WHEN @FN_DTI_Band = 00.00 then ' Missing'
        When @FN_DTI_Band < = 0.31 then 'Invalid'
        When @FN_DTI_Band between 0.31 and 0.34 then '31-34'
        When @FN_DTI_Band between 0.34 and 0.38 then '34-38'
        When @FN_DTI_Band >= 0.38 then '38+'
        else null end
            -- Return the result of the function
            RETURN @Return
END
以下是错误:

Msg 207, Level 16, State 1, Line 7
Invalid column name 'FN_DTI_Band'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'FN_DTI_Band'.

有人能帮我发现我忽略了什么吗?谢谢大家!

尝试在函数名前加上dbo

Select Count(*), dbo.FN_DTI_Band
From....

表格输入表格没有名为FN\u DTI\u Band的列

只有第一个select语句的结果具有该列名

您需要使第一个select语句成为第二个select语句的子查询

大概是这样的:

SELECT COUNT(*), T.FN_DTI_Band
FROM 
(
   SELECT  loan_number,dbo.FN_DTI_BANDS(debt_to_income) as FN_DTI_Band
   from #Input_table
) T
GROUP BY T.FN_DTI_Band
ORDER BY T.FN_DTI_Band

尝试后出现新错误:Msg 8115,级别16,状态8,第2行算术溢出错误将数值转换为数据类型数值。所以我试着:使用测试选择计数*,从选择贷款编号中选择t.FN\U DTI\U带,当债务对收入=0时,则0 else dbo.FN_DTI_bands debt_to_income结束为T2 T GROUP BY T.FN_DTI_Band ORDER BY T.FN_DTI_Band仍然不太正确…一些数据输入行在债务对收入列中有0.0000您可以在select语句中使用where将其删除。为什么完全转换。。。只需将参数声明为数字而不是小数4,3我只是没有想到,SQL对我来说还是有点陌生。。非常感谢您指出这一点,非常感谢!
SELECT COUNT(*), T.FN_DTI_Band
FROM 
(
   SELECT  loan_number,dbo.FN_DTI_BANDS(debt_to_income) as FN_DTI_Band
   from #Input_table
) T
GROUP BY T.FN_DTI_Band
ORDER BY T.FN_DTI_Band