首页 > 解决方案 > 在 Oracle 中将一列中不同的 500 个值拆分为 2 列,每列 250 个值

问题描述

我在一列中有 500 个不同的值。如果可能的话,我想知道如何拆分为 2 列。

当然我可以用 case 来选择这样的东西

SELECT 
case when rownum between 1 and 250 then i.item end a,
case when rownum between 251 and 500 then i.item end b
from items i;

但这将列一分为二,但行数仍然存在。在 A 列中将分别在 251-500 和 B 列 1-250 中有空值。

但我需要 250 行作为结果,A 列中的前 250 个值和 B 列中的下 250 个值

谢谢

标签: sqloracle12c

解决方案


您可以使用聚合。这是一种将其设置为的方法:

1     2
3     4
. . .

select min(case when mod(seqnum, 2) = 0 then item end),
       min(case when mod(seqnum, 2) = 1 then item end)       
from (select i.*, rownum - 1 as seqnum
      from items i
     ) i
group by floor(seqnum / 2)

推荐阅读