将行转换为同一表中的列并从表中删除该行

问题描述

如何通过将匹配的行转换为同一表中的列并从表中删除行来从表中选择行。有 4 个帐号(100,200,111,222),其中帐号 100 与 111 相关联,帐号 200 与 222 相关联。这里每个公司帐户(200)与姊妹公司帐户(222)相关联。请参阅下图原始表格和预期的结果。可能有没有关联公司的行。最终结果应该是,如果公司有关联的行,它们需要转换为一行中的列和单独的行。我尝试使用 Pivot 但无法实现结果。任何建议都可以帮助

Table structure and expected result

解决方法

您可以使用自连接和解析函数如下:

Select * from
(Select t.comapny,t.acct,t.amount,S.comapny as company_1,s.acct as acct_1,s.amount as amount_1,Row_number() 
         over (partition by least(t.comapny,s.comapny) order by t.amount) as rn
  From your_table t
  Left join your_table s on t.sister_company = s.company) t
Where rn = 1