我有两个表 1)客户表2)帐户表。我想查看哪些帐户是主要帐户,哪些是次要帐户。
在一个表中,我有accountRowId
和AccountNumber
。在另一个表中,我有PrimaryAccountRowId
和SecondaryAccountRowId
。
对于我的输出,我想将所有AccountNumbers
放在一列中,并将所有 AccountRelationship(主要或次要) 放在每个{{ 1}}。
为了加入表格,对于AccountNumber
,我将在PrimaryAccounts
上加入AccountRowId
;对于次要帐户,我将只使用触发器而不是拥有PrimaryAccountRowId
是primaryAccountRowId
。
我的帐户表:
SecondaryAccountRowId
客户表:
AccountRowId = 256073
AccountNumber = 8003564
AccountRowId = 342300
AccountNumber = 2034666
我想看到桌子的样子
PrimaryAccountRowId = 256073
SecondaryAccountRowId = 342300
请提供一些有关如何实现这些结果的有用逻辑/代码。谢谢
答案 0 :(得分:1)
这可以通过使用两个表之间的左联接来实现。基本上,通过检查客户表的primaryAccountRowId列中是否存在accountRowid,您将知道account_number是否为主要帐户,类似的逻辑也为次要帐户
例如:
select a.accountNumber
,max(case when p_acct.PrimaryAccountRowId is not null then 'PRIMARY'
when sec_acct.PrimaryAccountRowId is not null then 'SECONDARY'
end) as acct_relationship
from account a
left join customer p_acct
on a.AccountRowId =p_acct.PrimaryAccountRowId
left join customer sec_acct
on a.AccountRowId =sec_acct.PrimaryAccountRowId
group by a.accountNumber
答案 1 :(得分:0)
尝试一下:
SELECT AccountNumber,
MAX(CASE WHEN B.PrimaryAccountRowId IS NOT NULL THEN 'Primary'
WHEN C.SecondaryAccountRowId IS NOT NULL THEN 'Secondary'
END)AccountRelationship
FROM AccountTable A
LEFT JOIN CustomerTable B ON A.AccountRowId = B.PrimaryAccountRowId
LEFT JOIN CustomerTable C ON A.AccountRowId = C.SecondaryAccountRowId
GROUP BY AccountNumber
答案 2 :(得分:0)
您可以使用UNION ALL实现此目的。
SELECT a.AccountNumber, "Primary" AS AccountRelationship
FROM Account AS a
INNER JOIN Customer AS c
ON a.AccountRowId = c.PrimaryAccountRowId
UNION ALL
SELECT a.AccountNumber, "Secondary" AS AccountRelationship
FROM Account AS a
INNER JOIN Customer AS c
ON a.AccountRowId = c.SecondaryAccountRowId