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