繁体   English   中英

如何从db2中的多列中获取唯一数据

[英]how to get unique data from multiple columns in db2

我想通过以下方式从 2 列中获取数据:

Id1 id2 id3
1    1    2
2    3    null
2    4    null

开/关

Id1 data
1    1,2
2    3,4

这里id1是pk,id2和id3是其他表的fk。

这有点奇怪——在同一行内和跨多行连接。 一种方法是逆透视然后聚合:

select id1, listagg(id2, ',') within group (order by id2)
from (select id1, id2 from t union all
      select id1, id3 from t
     ) t
where id2 is not null
group by id1;

假设只有id2可以是NULL ,您还可以将其表示为:

select id1,
       listagg(concat(id2, coalesce(concat(',', id3), '')), ',') within group (order by id2)
from t
group by id1;

试试这个:

WITH TAB (ID1, ID2, ID3) AS 
(
VALUES 
  (1, 1, 2)
, (2, 3, NULL)
, (2, 4, NULL)
)
SELECT ID1, LISTAGG(DISTINCT ID23, ',') AS DATA
FROM
(
SELECT T.ID1, CASE V.ID WHEN 2 THEN T.ID2 ELSE T.ID3 END AS ID23
FROM TAB T
CROSS JOIN (VALUES 2, 3) V(ID)
)
WHERE ID23 IS NOT NULL
GROUP BY ID1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM