2015-02-04 132 views
1

Case語句我有一個表阿如下與連接子句

Acct_nbr  acount_relation_nbr  acct_relation_code  property 
1    0      0      12345 
1    9      T      ---- 
2    0      0      345 
2    9      0      ---- 

將Acct數目可以具有比其通過account_relation_nbr柱分化初級和次級記錄更多 - 如果0,則主,如果9然後二次。 我希望能夠根據以下條件在SQl中編寫一個case表達式 - 如果acount _relation_nbr = 9,那麼它會從acount_relation_nbr = 0中選擇property_id,因爲它們是同一個acount編號的2條記錄。 對於property_id的結果會出錯,這將填充另一個表B中的property_id列。 希望我已明確提出了我的問題。任何投入將不勝感激。

感謝, Pallavi

+0

請編輯您的問題並顯示您想要達到的結果。 –

回答

1

你可以預先計算你的財產價值爲acount_relation_nbr = 0,然後使用case使用該值時acount_relation_nbr = 9

SELECT Acct_nbr 
    ,acount_relation_nbr 
    ,acct_relation_code 
    ,CASE 
     WHEN acount_relation_nbr = 9 
      THEN cte.property 
     ELSE tableA.property 
     END property 
FROM TABLEA 
INNER JOIN (
    SELECT property 
     ,Acct_nbr 
    FROM tableA 
    WHERE acount_relation_nbr = 0 
    ) CTE 
ON TABLEA.Acct_nbr = CTE.Acct_nbr 
+0

非常感謝您的輸入!有效。 – Pallavi

+0

我是這個論壇中的新用戶。我如何接受某些東西作爲答案。我有什麼選擇嗎? – Pallavi

+0

這可能有助於http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – SoulTrain

0

所以我假設你正在試圖獲得輸出像這個:

Acct_nbr  acount_relation_nbr  acct_relation_code  property 
1    0      0      12345 
1    9      T      12345 
2    0      0      345 
2    9      0      345 

你可以通過使用嵌套查詢來實現這一點,所以你不需要c ase:

SELECT acct_nbr,account_relation_nbr,acct_relation_code, 
    (SELECT property FROM TABLE inr 
    WHERE inr.acct_nbr = out.acct_nbr 
     AND inr.account_relation_nbr=0) 
FROM TABLE out 
+0

非常感謝您的輸入 – Pallavi