2013-05-19 3 views
1

통화 변환 논리와 관련하여 질문이 있습니다. 현재 우리는 많은 통화 필드가있는 결과 집합을 반환합니다. 이제, 요구 사항은 사용자가 출력 통화 형식을 선택하는 옵션을 가져야한다고 말한다여러 행에 대한 통화 변환 논리

예 :

사용자는 이제 출력 형식으로 엔을 선택하면
 
Account name | Actual Amount | Estimated Amount | Target Amount 
XYZ   | $ 2000  | $ 456.78   | $ 890.45 
ABC   | SD 2000  | SD 456.78  | SD 890.45 

결과 집합

해야한다
 
Account name | Actual Amount | Estimated Amount | Target Amount 
XYZ   | ¥ 2233  | ¥ 42356.78  | ¥ 82390.45 
ABC   | ¥ 21213000 | ¥ 41156.78  | ¥ 82390.45 

통화 환율을 사용할 수 있으며 select 문에서 통화 열을 변환하는 함수 호출을 사용할 수 있음을 알고 있습니다. 그러나 각 레코드에 대한 함수 호출을 작성하면 실행 시간이 길어집니다.

실행 시간을 향상시키는 데 사용할 수있는 다른 논리가 있습니까?

답변

0

변환을 수행하는 함수를 사용할 때 모든 단일 레코드에 대해 함수가 실행된다는 것을 알아야합니다. 따라서 함수를 실행하는 오버 헤드 만 볼 때 레코드가있는 것만 큼 많은 실행을하게됩니다.

전환율을 넣은 위치에서 전환 표를 만드는 것이 더 좋습니다. 전환율 표와 원래 표 모두에서 통화를 보유하고있는 열을 보유하고 있는지 확인하십시오. select 문에서 rate * Actual Amount와 같은 수식을 출력합니다.

+0

마크, 응답 해 주셔서 감사합니다. 그러나, 나는 당신의 접근 방식에 대해 명확하지 않습니다. 예제를 사용하여 설명해 주시겠습니까? 한 행에 여러 개의 통화 열이있을 수 있으며 모든 열을 변환해야합니다. –

+1

모든 금액에 대해 통화를 알고 있는지 확인하십시오. 통화 변환 조회 테이블을 만듭니다. 조회 테이블과 금액 테이블을 결합하십시오. 그런 다음 select 문에서 환율에 환율을 곱하십시오. 이러한 sqlfiddle에서 볼 수있는 가장 이상적인 방법 (2 분 안에 만들었습니다) : http://sqlfiddle.com/#!3/24dc4/4 –

+0

감사 마크, 도움이되었습니다. –