带有连接子句的案例陈述
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
的 属性 值,然后使用 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
所以我假设您正在尝试获得这样的输出:
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
我有一个 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
的 属性 值,然后使用 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
所以我假设您正在尝试获得这样的输出:
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