올바르게 설명하는 방법을 모르겠습니다. 내 세부 표에서 수수료를 찾으려고합니다. 수수료가 모두 $ 10.00이라고 가정 해 보겠습니다.Case 문, varchar 값을 데이터 유형 int로 변환 할 때 변환하지 못했습니다.
내가하려는 것은 tranname = 'Corr Official'이고 Fee.Waiver가 Null 인 경우 필드 값을 음수로 만드는 것입니다. 문제는 테이블의 필드가 varchar라는 것입니다. 나는 캐스트와 개종자를 성공시키지 않으려 고 노력했다. int 데이터 형식에 VARCHAR 값 '$ 10.00을'변환 할 때 변환이 실패
메시지 245, 수준 16, 상태 1, 줄 1 :
(Case when Detail.FieldValue = '$0.00' and tranname = 'Official' then Fee.Waiver * -1
when TranName = 'CORR-Official ' and Fee.Waiver IS not null then Fee.Waiver
when TranName = 'CORR-Official' and Fee.Waiver IS null then Cast(Detail.FieldValue, int) * -1
when Detail.FieldValue = '$0.00' and Fee.Waiver IS not null then Fee.Waiver * -1
when Fee.Waiver IS not null then Fee.Waiver * -1
when Detail.FieldValue is null and Fee.Waiver IS null then Detail.FieldValue
else Detail.FieldValue end) as FieldValue
여기 내 오류입니다.
FieldValue에 통화 값을 저장하는 이유는 무엇입니까? 솔직히 끔찍한 디자인입니다. 숫자 값은 숫자 열에 저장해야합니다. '$ 0.00 '을 0으로 변환 할 수 없다. SQL이 아닌 숫자이기 때문이다. 다른 통화 기호가 아닌 달러 기호 만 있으면 변환하기 전에 달러 기호를 제거 할 수 있습니다. 내가 여기 없을 거라는 걸 알았다면 남자, – LittleBobbyTables
. 왜 그들이 데이터를 이런 방식으로 구성했는지에 대해 저를 시작하지 마십시오. 그것은 내 통제에서 벗어났다. 사용자 융통성 ... – donviti
요금의 데이터 유형은 무엇입니까? – HoneyBadger