将同一表中的行转换为列,然后从表中删除该行



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

表结构和预期结果

您可以使用如下的自联接和分析函数:

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

相关内容

最新更新