sql - 在 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 个值
谢谢
解决方案
您可以使用聚合。这是一种将其设置为的方法:
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)
推荐阅读
- javascript - 单击复选框将项目添加到单独的 div 一次只显示一个项目
- html - 使用 v-else-if 和事件 VueJS
- angular - 失败:模板解析错误:没有将“exportAs”设置为“ngForm”Angular 6 的指令
- vb.net - 将遗留代码转换为参数化查询的问题
- facebook - Facebook Graph API 点赞/评论业务页面推荐
- javascript - 如何阻止模式直到解决 api 请求
- ios - 使用 UIBezierPath bezierPathWithRoundedRect 的单边角半径:得到扭曲的角。任何人都可以帮助实现良好的角落吗?
- windows - 从 IShellView 实例获取列表视图控件句柄
- java - 我们可以根据 id 以外的任何其他唯一字段更新 Keycloak 中的用户吗?
- oracle - SSIS 数据流,忽略 SQL 语句中的 where 子句