위 오류는 많이 봤던건요. 여러개의 테이블을 조인을 해서... 결과값을 얻어낼려고 하는데요... Select * from A 를 한 결과값 a b c d 20130401008 1.00 -8927999.00 2013-04 20130510001 670000000.00 923056.00 2013-07 20130527001 1.00 -3999999.00 2013-06 20130529001 14500000.00 2735000.00 2013-06 20130621001 131000000.00 8070000.00 2013-09 20130625002 1.00 -23999999.00 2013-07 Select * from B 를 한 결과값 a b c d 20130401008 1.00 -8927999.00 2013-04 20130510001 670000000.00 923056.00 2013-07 20130527001 1.00 -3999999.00 2013-06 20130529001 14500000.00 2735000.00 2013-06 20130621001 131000000.00 8070000.00 2013-09 20130625002 1.00 -23999999.00 2013-07 조건에 따라 위 값은 달라지는데요... 이번에는 같게 나왔습니다. 위 값을가지고 Select sum(isnull(A.b,0) - isnull(B.b,0)) as a , sum(isnull(A.c,0) - isnull(B.c,0)) as c , A.d from (Select * from A ) as A left outer join (Select * from B ) as B on A.a = B.a and A.d = B.d group by A.d 이렇게 하면 데이터 형식 varchar을(를) numeric(으)로 변환하는 중 오류가 발생했습니다. 이런 오류가 발생을 합니 다. 그래서 어디서 나는지 몰라서 하나씩 빼보았는데요. - isnull(B.c,0) 이 부분을 빼면 오류가 안나더라구요. 뭘 손을 봐야 할까요?
Comment 3
-
History
2014.03.05 22:36
해당 컬럼에 범위를 벗어난 값이나 null이 존재하는지 판단해보심이 어떨까여..혹은 sum결과값이 허용된범위릉 벗어났을수도 있습니다 -
History
2014.03.06 08:35
ISNUMERIC 함수를 사용해. 해당컬럼 데이터중 숫자형으로 변경가능하지 않은게 있는지도 확인해보세요 -
taz2315
2014.03.06 09:13
위 예시에서는 A 와 B 와 의 목록이 같기 때문에
left outer join 을 하나 inner join 을 하나 결과값이 똑같이 나와야 하지 않나요?
그런데 inner join 을 하면 오류없이 결과값이 잘 나옵니다.
그런데 left outer join 을 하면 오류가 발생을 합니다.
그리고 필드마다 다 ISNUMRIC 으로 체크를 해봐도 별 이상이 없는것 같습니다.