带有连接子句的案例陈述

Case statement with join clause

我有一个 table A 如下

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

帐户号可以有多个主要和次要记录,通过 account_relation_nbr 列区分 - 如果 0 则主要,如果 9 则次要。 我希望能够根据以下条件在 SQl 中编写一个 case 表达式 - 如果 acount _relation_nbr =9,则它从 acount_relation_nbr =0 中选择 property_id,因为它们是同一帐号的 2 条记录。 根据 property_id 的结果,这将填充另一个 table B 中的 property_id 列。 希望我已经把我的问题说清楚了。任何输入将不胜感激。

谢谢, 帕拉维

您可以预先计算 acount_relation_nbr = 0 的 属性 值,然后使用 caseacount_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

所以我假设您正在尝试获得这样的输出:

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