簡體   English   中英

帶連接子句的案例聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM