我有一张表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则为secondary。 我希望能够根据以下条件在SQl中编写一个case表达式 - 如果acount _relation_nbr = 9,那么它从acount_relation_nbr = 0中选择property_id,因为它们是同一个帐号的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
答案 1 :(得分: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
您可以使用嵌套查询来实现此目的,因此您不需要大小写:
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