[英]Case statement with join clause
我有一個表A如下
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,則為primary;如果為9,則為次要。 我希望能夠根據以下條件在SQl中編寫一個case表達式-如果acount _relation_nbr = 9,則它從acount_relation_nbr = 0中選擇property_id,因為它們是2個記錄,具有相同的帳號。 根據property_id的結果,這將填充另一個表B中的property_id列。希望我已經闡明了我的問題。 任何輸入將不勝感激。
謝謝,帕拉維
您可以預先計算acount_relation_nbr = 0
屬性值,然后在acount_relation_nbr = 9
時使用case
來使用該值
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
因此,我假設您正在嘗試獲取如下輸出:
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
您可以使用嵌套查詢來實現,因此不需要大小寫:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.