创建具有基于联接的值的列

时间:2019-12-10 16:34:35

标签: sql sql-server join unpivot

我有两个表 1)客户表2)帐户表。我想查看哪些帐户是主要帐户,哪些是次要帐户。

在一个表中,我有accountRowId。在另一个表格中,我有PrimaryAccountRowIdSecondaryAccountRowId以及“ AccountNumber”。

对于我的输出,我想将所有AccountNumbers放在一列中,并将所有 AccountRelationship(主要或次要) 放在每个{{ 1}}。

为了加入表格,对于AccountNumber,我将在PrimaryAccounts上加入AccountRowId;对于次要帐户,我将只使用触发器而不是拥有PrimaryAccountRowIdprimaryAccountRowId

我的帐户表:

SecondaryAccountRowId

客户表:

  AccountRowId = 256073
  AccountRowId = 342300

我想看到桌子的样子

   PrimaryAccountRowId = 256073
   SecondaryAccountRowId = 342300
   AccountNumber = 8003564
  AccountNumber = 2034666

请提供一些有关如何实现这些结果的有用逻辑/代码。

在OP的注释中,这是表格结构。

     AccoundNumber        AccountRelationship
      8003564             Primary
      2034666             Secondary

1 个答案:

答案 0 :(得分:0)

我仍然在这里猜测。您需要提供表结构,样本数据和所需的输出,以使人们可以轻松地为您提供帮助。遵循这些原则。

declare @Customer table
(
    AccountNumber Varchar(50)
    , PrimaryAccountRowId Varchar(15)
    , SecondaryAccountRowId Varchar(15)
)

insert @Customer values
('8003564', '256073', null)
, ('2034666', null, '342300')

declare @Account table
(
    AccountRowid Varchar(15)
)

INSERT @Account values
('256073'), ('342300')

现在,我们可以处理一些表和数据,这只是条件聚合的一种情况。据我所知,这应该返回您要查找的数据。

select c.AccountNumber
    , AccountRelationship = max(case when p.AccountRowId is not null then 'Primary' when c.SecondaryAccountRowId is not null then 'Secondary' end)
from @Customer c
left join @Account p on p.AccountRowid = c.PrimaryAccountRowId
left join @Account s on s.AccountRowid = c.SecondaryAccountRowId
group by c.AccountNumber
order by AccountRelationship