2014-12-29 8 views
0

제안 사항이 있습니까? 아래의 코드 intv.PAIN_INTERVENTION을 주석으로 처리하면 아래 코드가 작동합니다. 아무리 내가 varcharintv.PAIN_INTERVENTION을 캐스팅하는 일CTE의 Nullable 필드가 varchar 인 경우 get CTE에 가입 할 때 데이터 유형 varchar를 숫자로 변환하는 중 오류가 발생했습니다

, 나는이 오류 메시지가 계속 나는 CTE에 가입 할 때 :

메시지 8114, 수준 16, 상태 5, 7 호선
오류 데이터 형식을 변환 varchar를 숫자로.

코드 :

,pain_intervention_cte AS ( 
    SELECT DISTINCT 
     ACCOUNT_NUM, PAIN_INTERVENTION 
    FROM 
     INIT_CTE 
    INNER JOIN .... 
) 

,pain_intervention_cte1 AS ( 
    select 
     ACCOUNT_NUM as ACCOUNT_NUM, 
     CAST(PAIN_INTERVENTION AS varchar) AS PAIN_INTERVENTION 
    from 
     pain_intervention_cte 
    where 
     PAIN_INTERVENTION is not null 
    UNION 
    select 
     ACCOUNT_NUM as ACCOUNT_NUM, 
     CAST(PAIN_INTERVENTION AS varchar) AS PAIN_INTERVENTION 
    from 
     pain_intervention_cte 
    where 
     PAIN_INTERVENTION is null 
) 
select DISTINCT 
    INIT_CTE.*, intv.PAIN_INTERVENTION 
from 
    init_cte 
left outer join 
    pain_intervention_cte1 INTV ON intv.ACCOUNT_NUM = init_cte.ACCOUNT_NUM 
+0

.? –

+0

이것을 피하려면 pain_intervention를 숫자 형식으로 형변환하면 안됩니까? 어떤 유형의 데이터가 보관됩니까? –

+1

해당 열을 숫자 값으로 변환 할 위치가 없으므로 표시중인 코드에 오류가 없습니다. 7 호선과 앞선 호에는 무엇이 있습니까? –

답변

0

시도이`INIT_CTE *`의 열은 무엇

,pain_intervention_cte AS ( 
SELECT DISTINCT 
    CAST(isnull(ACCOUNT_NUM,0) AS int) AS ACCOUNT_NUM, CAST(isnull(PAIN_INTERVENTION,0) AS varchar) AS PAIN_INTERVENTION 
FROM 
    INIT_CTE 
INNER JOIN .... 
) 

,pain_intervention_cte1 AS ( 
select 
    ACCOUNT_NUM, PAIN_INTERVENTION 
from 
    pain_intervention_cte 
where 
    PAIN_INTERVENTION is not null 
UNION 
select 
    ACCOUNT_NUM, PAIN_INTERVENTION 
from 
    pain_intervention_cte 
where 
    PAIN_INTERVENTION is null 
) 
select DISTINCT 
    INIT_CTE.*, intv.PAIN_INTERVENTION 
from 
    init_cte 
left outer join 
pain_intervention_cte1 INTV ON intv.ACCOUNT_NUM = init_cte.ACCOUNT_NUM