2015-10-06 74 views
-1

如果有人能就我的問題提出建議,我將不勝感激。在SELECT語句中循環引用

在我的表中的每個記錄有另一條記錄,例如參考:

ID  DEBIT_ACCT_NO CREDIT_ACCT_NO ID_REF AS_OF_DATE 

REF1 NOSTRO123  USD111   NULL 03.06.2015 
REF2 USD111   USD222   REF1 08.06.2015 
REF3 USD222   CLIENT1982  REF2 10.06.2015 

在這裏,我需要找到最初的交易,第3的記錄(總是出現在信用賬戶爲客戶帳戶),輸出將是

ID  INITIAL_ID 
REF3  REF1 

這種轉換的次數可能會有所不同。假設初始交易總是有DEBIT_ACCT_NO等於NOSTRO123。我不確定CTE能否在這裏幫助。

非常感謝!

+1

你嘗試過什麼?什麼是'INITIAL_ID'?它總是基於'AS_OF_DATE'的第一個參考嗎? –

+0

它看起來像一個遞歸的'cte'的用例,我沒有看到什麼讓你認爲'cte'可能沒有幫助? –

+0

CTE肯定會有幫助,你試過了什麼? –

回答

0

也許以下recursive SQL query可以幫助你

;with cte as (
    select cast(a.ID as varchar(20)) as [Source], a.ID, a.ID_REF 
    from accounts a where ID = 'REF3' 
    union all 
    select cte.Source, a.ID, a.ID_REF 
    from accounts a 
    inner join cte on cte.ID_REF = a.ID 
) 
select [Source] ID, ID ID_REF 
from cte 
where ID_REF is null 
+0

正是我需要的,謝謝 –