SQL将两条记录转换为两列
我不知道标题是否正确,但基本上我需要这个(查询结果): 要插入/更新(如果表中有r_e_s_id值)到具有cols-r_e_s_id、perid1、perid2…的表COMM_PROP中,如下所示:SQL将两条记录转换为两列,sql,oracle,split,pivot,Sql,Oracle,Split,Pivot,我不知道标题是否正确,但基本上我需要这个(查询结果): 要插入/更新(如果表中有r_e_s_id值)到具有cols-r_e_s_id、perid1、perid2…的表COMM_PROP中,如下所示: r_e_s_id perid1 perid2 89074 161704 161703 89095 161708 161707 68651 129884 129883 81512 161074 161073 我该怎么做?我正在使用Ora
r_e_s_id perid1 perid2
89074 161704 161703
89095 161708 161707
68651 129884 129883
81512 161074 161073
我该怎么做?我正在使用Oracle 11g
谢谢你的帮助 考虑到每个r_e_s_id只有两个值,即1个最大值和1个最小值,请尝试以下操作:-
SELECT r_e_s_id, MAX(person_id) AS perid1, MIN(person_id) AS perid2
FROM YOUR_TABLE
GROUP BY r_e_s_id;
您使用的Oracle版本是什么?如果不是作为不同的列,那么您可以使用字符串聚合技术。根据您的版本,有几种方法。但是,如果您希望它是一个不同的列,那么您需要UNPIVOT。但是,正如@bluefeet所说,您需要告诉我们版本。谢谢。版本是11g@BohuslavDvorský您是否只有2个
perid
值?或者它是未知的?我认为这不是一个轴心案例,你不想在列中转换行,你想要列的最大值和最小值,正如Ankit所展示的,我不理解投票结果。我认为这是一个可能的解决方案。不是我的投票,而是如果他们有两个以上的值会发生什么?这是行不通的。我写的只考虑了两个值,即每个r_e_s_id的最大值和最小值。。。。。。。。。。。。。。。。。从样品上也可以清楚地看到。谢谢你的帮助。这确实有效。如果有人知道多个值(两个以上)的解决方案,我也很高兴听到:-)
SELECT r_e_s_id, MAX(person_id) AS perid1, MIN(person_id) AS perid2
FROM YOUR_TABLE
GROUP BY r_e_s_id;