2013-07-02 1 views
0

개별 "실적"분기에 대해 "취득"테이블의 채권에 대한 원래 잔액을 찾습니다. 그것은 매 분기마다 근무,하지만 난 2010Q1 내 쿼리를 실행 시도 할 때,이 통지를받은 : 채권이 디폴트 방법varchar 값 'N'을 데이터 유형 int로 변환 할 때 변환에 실패했습니다

SELECT ALL a.[LOAN IDENTIFIER] 
     ,[CHANNEL] 
     ,[SELLER NAME] 
     ,[ORIGINAL INTEREST RATE] 
     ,[ORIGINAL UNPAID PRINCIPAL BALANCE (UPB)] 
     ,[ORIGINAL LOAN TERM] 
     ,[ORIGINATION DATE] 
     ,[FIRST PAYMENT DATE] 
     ,[ORIGINAL LOAN-TO-VALUE (LTV)] 
     ,[ORIGINAL COMBINED LOAN-TO-VALUE (CLTV)] 
     ,[NUMBER OF BORROWERS] 
     ,[ORIGINAL DEBT-TO-INCOME RATIO] 
     ,[CREDIT SCORE] 
     ,[FIRST-TIME HOME BUYER INDICATOR] 
     ,[LOAN PURPOSE] 
     ,[PROPERTY TYPE] 
     ,[NUMBER OF UNITS] 
     ,[OCCUPANCY STATUS] 
     ,[PROPERTY STATE] 
     ,[ZIP (3-DIGIT)] 
     ,[MORTGAGE INSURANCE PERCENTAGE] 
     ,[PRODUCT TYPE] 
    FROM dbo.Performance_2010Q1 a join dbo.TotalAcquisition b on a.[Loan Identifier] = b.[LOAN IDENTIFIER] 

Where a.[Zero Balance Code] = 97 or a.[Zero Balance Code] = 03 

제로 밸런스 코드는 말하고있다 :

Msg 245, Level 16, State 1, Line 2 
Conversion failed when converting the varchar value 'N' to data type int. 

내 쿼리입니다 , 각 채권의 "Loan Identifier"를 기반으로 두 테이블간에 일치합니다.

고마워요! :-D

+2

'2010Q1' 범위의 열 중 하나에'N '값이 있지만 그 열의 다른 값은 정수입니다. 개별 'Performance_2010Q1' 및'TotalAcquisition' 테이블을보고'N '이 포함 된 열을 찾고 문제를 해결하십시오. – LittleBobbyTables

+2

분명히 여러분은 숫자 값과 비교되는 어딘가에 varchar 컬럼을 가지고 있습니다. 표 정의를 입력하십시오. –

답변

2

, 그것은이 ON 또는 WHERE 절에 하나 암시 적 변환해야합니다.

대출 식별자 하나에 nvarchar로 정의되어야 할 것이다 변환을 일으킬 수있는 ON 조항에 대한

, 다른 테이블에 int있다. 이것은 거의 불가능합니다 (불가능하지는 않지만 ;-)

그래서 WHERE 절이 의심됩니다. 잔액 코드nvarchar으로 정의되어 있고 int (97 또는 3)과 비교할 경우 암시 적 변환이 발생할 수 있습니다. 테이블에 문자가 포함 된 항목이 하나만있는 경우이 암시 적 변환은 실패합니다. 이 문제를 방지하는 한 가지 방법은 문자열로 WHERE 절을 정의하는 것입니다 (예 : WHERE A.[Zero Balance Code] = '97', '03'과 동일). 약간 더 우아한 방법 중 하나는 ISNUMERIC으로 숫자 데이터를 확인하는 것입니다. 균형 코드가 항상 '03'이고 '3' 일뿐만 아니라 어떻게 알 수 있습니까? 이러한 항목은 '3''03' 동일하지 않기 때문에 ...,

을 필터링 그러나 조심해야 할 것 :
이 진짜 문제를 무시 할 수있다. 여기서 큰 질문은 갑자기 테이블에 숫자가 아닌 데이터가있는 이유입니다. 시스템에 손상된 데이터가 어떻게 든 입력되었는지 확인해야합니다.

+0

감사합니다. 작동합니다! 나는 그것이 아직도 부패했는지보기 위해 다시 점검 할 것이다. – user2501627

1

. [제로 균형 코드]에 int로 변환 할 수없는 값이 있습니까?

은 어디 caluse이 시도 : 당신은 필드 목록에 명시 적 변환이 없기 때문에

Where a.[Zero Balance Code] = '97' or a.[Zero Balance Code] = '03' 
관련 문제