sql - Redshift SQL - 反向 Listagg 函数
问题描述
假设我有一个如下表:
Name Order
AA 1,2
BB 2,3
我希望我的结果是这样的:
Name Order
AA 1
AA 2
BB 2
BB 3
如何在 Redshift 中实现这一点?
谢谢!
解决方案
假设您事先知道每个分隔列表的最大元素数,您可以使用数字表和 来做到这一点split_part()
:
select t.name, split_part(t.order, ',', n.n) val
from (
select 1 n
union all select 2
union all select 3
) n
inner join mytable t
on n.n <= regexp_count(t.order, ',') + 1
n
您可以根据需要使用更多数字扩展派生表。也可以row_number()
针对大表使用来生成数字表。
推荐阅读
- azure - 在 Azure 应用程序网关上定义的重写规则似乎不适用于 TRACE 方法
- javascript - CKEditor 插入 html 重复项
- angular - 将模板动态传递给子组件
- python - 通过基于分类对的分组 ID 突出显示行
- firefox - Firefox 将附加文件保存在本地存储的什么位置?
- arrays - 团结 | 创建新标签的脚本
- java - 在模块依赖中声明named的提供方法
- c# - 如何在 signalr javascript 文件中使用 C# 列表?
- java - 如何在主类以外的类中使用发送到程序的参数?
- php - 如何
在 PHP nl2br 函数中转义?