2017-01-25 1 views
0

SQL 서버에 복합 관심 모듈을 구축하는 가장 좋은 방법에 대한 조언을 찾고 있습니다. 기본 설정 : 테이블 : 트랜잭션 {TransID, MemberID, Trans_Date, Trans_Code, Trans_Value). 테이블 :이자 {IntID, Int_eff_Date, Int_Rate}SQL 서버 트랜잭션에 대한이자 계산

이자 테이블에는 유효 일자가 다른 요율이있을 수 있습니다. 예 :

트랜잭션 날짜를 기준으로 올바른 이자율이 적용되는 거래 날짜와 거래 값을 기준으로이자를 계산하고 싶습니다.

그렇다면 표 거래했다 :

는 09 2016년 1월 10일에서 15/04/2016 30/09/2016까지 (168일)에서 7 %를 사용합니다 TRANSID 1의
TransID MemberID Trans_Date Trans_Value 
1   1   15/04/2016 150 
2   1   18/10/2016 200 
3   1   24/11/2016 200 
4   1   15/01/2017 250 

/01/2017 7. %를 사용하고 10/01/2007부터 계산 날짜 (입력 매개 변수)까지는 8 %를 사용합니다.

모든 거래에 대해 유사한 방법론을 적용하여이를 추가하고이자 값을 표시합니다. 나는이 당신이 뭘 하려는지의 개요를 제공해야한다 등

+0

출력이 어떻게 생겼을 까? –

+0

이상적으로 매월 말에 거래 테이블에이자 거래를 쓰고 싶습니다 (Trans_code 2). 모든 회원 ID에서 또한 중간 달 계산을위한 UDF를 원할 것입니다. 그래서 입력은 memberID, Calculation date 일 것입니다. 산출물은 거래 합계 (기간 동안 거래 합계,이자 계산 일까지)입니다. – Marc

+0

결과 테이블의 모양을 보여줄 수 있습니까? – pacreely

답변

0

커서, UDF를 사용하는 경우는

는 잘 모르겠어요.

--Build Test Data 
CREATE TABLE #Rates(Int_Eff_Date DATE 
        , Int_Rate FLOAT) 
CREATE TABLE #Transactions(TransID INT 
          ,MemberID INT 
          ,Trans_Date DATE 
          ,Trans_Value INT) 

INSERT INTO #Rates  
VALUES ('20160101',7) 
     ,('20161001',7.5) 
     ,('20170110',8) 

INSERT INTO #Transactions 
VALUES 
(1,1,'20160415',150) 
,(2,1,'20161018',200) 
,(3,1,'20161124',200) 
,(4,1,'20170115',250) 


;WITH cte_Date_Rates 
    AS 
    (
    SELECT 
     S.Int_Eff_Date 
     ,ISNULL(E.Int_Eff_Date,'20490101') AS "Expire" 
     ,S.Int_Rate 
    FROM 
     #Rates S 
      OUTER APPLY (SELECT TOP 1 Int_Eff_Date 
         FROM #Rates E 
         WHERE E.Int_Eff_Date > S.Int_Eff_Date 
         ORDER BY E.Int_Eff_Date) E 
    ) 
SELECT 
    T.* 
    ,R.Int_Rate 
FROM 
    #Transactions T 
     LEFT JOIN cte_Date_Rates R 
      ON 
      T.Trans_Date >= R.Int_Eff_Date 
      AND 
      T.Trans_Date < R.Expire 
+0

감사합니다. 그러면 올바른 이자율이 올바르게 표시됩니다. 거래 날짜. 단일 거래를 봅시다. 나는 각 관심사 기간 안에 일을 운동하고 정확한 비율을 적용 할 필요가있을 것입니다. 그래서 거래가 100 날짜 28-11-2016 - 시작 속도는 7.5 %입니다. IK는이 날짜 이후에 또 다른 이자율이 있는지 확인해야합니다. 그렇지 않으면 계산이 간단합니다. 며칠 (계산 일부터 거래 날짜까지) 걸리고 확인 된 이자율을 사용하여이자를 계산합니다. – Marc

+0

.... 다른 이자율이있는 경우, 거래 일부터 다음 이자율까지 일을 계산하고, 수식에 비율을 적용하고, 결과를 변수에 저장해야합니다. 다른 요금 변경이 있으면 다시 테스트하십시오. 그렇다면 금리 변경 사이의 일 수를 계산하십시오. 요금은 공식에 연결하고이자 결과를 변수에 추가하십시오. 이자율 변동이없는 계산 일에 도달 할 때까지이 작업을 계속하십시오. 이해가 되니? – Marc