Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL将两条记录转换为两列_Sql_Oracle_Split_Pivot - Fatal编程技术网

SQL将两条记录转换为两列

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值)到具有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
我该怎么做?我正在使用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;