如何使用join处理重复行

sauutmhj  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(239)

我有一张table。

  1. -------------------------
  2. KeyInstn | SwiftBICCode
  3. 100369 | BOFAUSV1
  4. 100369 | MLCOUS33

keyinstn\表

  1. -------------------------
  2. KeyInstn | country
  3. 100369 | USA
  4. 100370 | India

我正在尝试将keyinstn\u表与bic\u表连接起来。
我想以逗号分隔的形式连接这两个值。
如何得到这样的结果

  1. -------------------------
  2. KeyInstn | country | SwiftBICCode
  3. 100369 | USA | BOFAUSV1,MLCOUS33
  4. 100370 | India | BOFH76HG
  5. -------------------------
sg2wtvxw

sg2wtvxw1#

如果数据库版本为sql server 2017+,则可以使用以下选项:

  1. SELECT a.keyInstn, country,STRING_AGG(SwiftBICCode, ', ') AS SwiftBICCode
  2. FROM tablename a inner join keyInstn_table b on a.keyInstn=b.KeyInstn
  3. GROUP BY a.keyInstn,country

或者,您可以使用 stuff() 对于较低版本的sql server

  1. select u.keyInstn, country,
  2. stuff(( select concat( ',', SwiftBICCode) from tablename y
  3. where y.keyInstn= u.keyInstn for xml path('')),1,1, '')
  4. from tablename u inner join keyInstn_table b on u.keyInstn=b.KeyInstn
  5. group by u.keyInstn,country

相关问题