UDF не возвращает данные правильно в программировании T-SQL - PullRequest
1 голос
/ 02 июля 2010

ЗДЕСЬ ФУНКЦИЯ:

ALTER FUNCTION dbo.FN_GET_QUARTER
 -- the parameters for the function here
(
  @FN_Qtr_date  datetime 
)

RETURNS INT
AS
BEGIN

    RETURN datepart(qq,@FN_Qtr_date)
END 

ЗДЕСЬ ОТЧЕТ SQL:

IF(SELECT(OBJECT_ID('TEMPDB..#T1'))) IS NOT NULL DROP TABLE #T1


SELECT      L_NUMBER, LAST_MAINTENANCE_DATE,
            dbo.FN_FICO_BANDS (LAST_MAINTENANCE_DATE) AS  FN_Qtr_date
INTO  #T1
FROM  OPENQUERY(SrvLink, '

SELECT      LOAN_NUMBER,LAST_MAINTENANCE_DATE
FROM  BDE.loan_V
FETCH FIRST 1000 ROWS ONLY WITH UR ')
GO


SELECT      COUNT(*), FN_Qtr_date

FROM  #T1
GROUP BY FN_Qtr_date
ORDER BY FN_Qtr_date

Результаты:

 L count               FN_Qtr_Date
  150                   Invalid
  355                   Invalid

Я не уверен, что я делаю неправильно ..

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Первое, что бросается в глаза, это то, что вы звоните dbo.FN_FICO_BANDS вместо dbo.FN_GET_QUARTER

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

dbo.FN_FICO_BANDS (LAST_MAINTENANCE_DATE) AS FN_Qtr_date

Если вы собираетесь использовать эту функцию в LAST_MAINTENANCE_DATE, вам необходимо использовать: dbo.FN_Qtr_Date (LAST_MAINTENANCE_DATE) ASQUQUU

...