Элемент функции SQL Scalar не распознается в программе TSQL - PullRequest
0 голосов
/ 05 июля 2010

У меня есть входная таблица db2 с двумя элементами: loan_number, debt_to_income; имя этой таблицы #Input_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

Вот программа тестирования T-SQL:

SELECT  loan_number,dbo.FN_DTI_BANDS(debt_to_income)as FN_DTI_Band

from #Input_table

SELECT      COUNT(*), FN_DTI_Band
FROM  #Input_table
GROUP BY FN_DTI_Band
ORDER BY FN_DTI_Band

Вот ошибка:

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'.

Может ли кто-нибудь помочь мне определить, что я пропускаю? Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 июля 2010

таблица #input_table не имеет столбца с именем FN_DTI_Band.

Просто у результата первого оператора выбора есть имя этого столбца.

Вам необходимо сделать первый оператор выбора подпрограммойзапрос 2-го

Примерно так:

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
0 голосов
/ 05 июля 2010

Попробуйте добавить "dbo" к имени функции.

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