首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Pivot SQL

Oracle Pivot SQL
EN

Stack Overflow用户
提问于 2019-06-20 22:06:43
回答 1查看 33关注 0票数 0

我希望两个ID可以基于匹配/相似对字段值旋转到同一行。目前,ID仅在单个列中列出,我按PAIR字段的值进行排序。

下面是我当前正在运行的查询。

代码语言:javascript
复制
select ID,PAIR
from   Table
where   PAIR in
 (select PAIR from Table  
  where ID  in
   (select ID
   from review
   where rule = 1234456
   and trunc(RECVDDATE) = trunc(sysdate-1) 
   )
 )
order by PAIR;

        ID PAIR
   4173910 1175
   4423979 1175
   4425330 17B5
   4106895 17B5
   4421153 E54E
   3706124 E54E

6 rows selected.

我希望这是我想要的结果。基本上是根据喜欢/匹配对的值旋转ID。

代码语言:javascript
复制
     ID(1)   ID(2)
   4173910 4423979
   4425330 4106895
   4421153 3706124
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-20 22:27:40

根据您的确切需求(请参阅您的问题下面的我的评论),这可能会起作用:

(1)在ORDER BY PAIR之前添加GROUP BY PAIR

(2)将SELECT子句修改为

代码语言:javascript
复制
select min(id) as id_1, case when max(id) != min(id) then max(id) end as id_2

如果某些PAIR值只有一个ID,则存在CASE表达式-在这种情况下,ID_2不应重复ID_1中的值,而应为NULL。(无论如何,这就是PIVOT的工作方式。)

注意,这个解决方案没有使用PIVOT运算符;考虑到您已经拥有的内容,添加聚合会更简单。PIVOT需要将当前查询转换为子查询,然后在外部SELECT语句中进行旋转。

如果您愿意,为了简洁起见,您可以使用NULLIF(MAX(ID), MIN(ID))而不是CASE表达式;它的含义完全相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56687792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档