微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

合并oracle行

如何解决合并oracle行

我的选择中有以下一行

ColA | ColB | ColC | ColD
=========================
A       B      C1     X1
A       B      C2     X2
AA      BB     C3     Y1
AA      BB     C4     Y1

我想要

ColA | ColB | ColC | ColD | ColE | ColF
=======================================
A       B      C1     X1     C2     X2
AA      BB     C3     Y1     C4     Y1     

我尝试使用PIVOT,但总是出现错误。我的ColE和ColF值未定义,但我知道对于ColA和B,我总是得到2行。

谢谢

解决方法

如果可以使用PIVOT的技巧,可以使用row_number

select *
from
(
select colA,colB,colC,colD,row_number() over (partition by colA,colB order by colA,colB) rn
  from data
)
pivot
(
 max(ColC) as colC,max(ColD) as colD
 for rn in (1 as colE,2 as colF)
);

P.S。您可以在末尾命名所需的别名。根据您的示例情况,我仅使用了行号1和2,但是您可以根据需要随意提及(hard code),这是pivot的缺点。为了解决这个问题,下一步可能需要动态SQL。

Db<>Fiddle

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。