根据连接创建具有值的组列

Create group column with values based on join

我有两个 table 1) 一个客户 table 2) 帐户 table. 我想看看哪些帐户是主要帐户哪些是次要帐户。

在一个 table 中,我有 accountRowIdAccountNumber。在另一个 table 中,我有 PrimaryAccountRowIdSecondaryAccountRowId

对于我的输出,我想将所有 AccountNumbers 与所有 AccountRelationship(primary or seconday) 在每个 AccountNumber 旁边的另一列中。

为了加入 table,对于 PrimaryAccounts,我会在 PrimaryAccountRowId 加入 AccountRowId,对于次要帐户,我只是触发器而不是 [= =22=] 会是 SecondaryAccountRowId

我的账户table:

  AccountRowId = 256073
  AccountNumber = 8003564
  AccountRowId = 342300
  AccountNumber = 2034666

客户table:

   PrimaryAccountRowId = 256073
   SecondaryAccountRowId = 342300

我想看到我的 table 是什么样子

     AccoundNumber        AccountRelationship
      8003564             Primary
      2034666             Secondary

请提供一些有用的 logic/code 我将如何实现这些结果。谢谢

这可以通过在两个 table 之间使用左连接来实现。基本上通过检查 accountRowid 是否存在于来自客户 table 的 primaryAccountRowId 列中,您会知道 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

试试这个:

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

您可以使用 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