首页 > 解决方案 > 将行值复制 N 次 Redshift

问题描述

我有结构为“位置”、“价值”的数据。无论“值”列是什么,我都希望该位置显示为单独的行。

例如: A, 500是一行,我希望“A”显示为 500 个不同的行。

标签: amazon-redshift

解决方案


这可以使用数字表和范围连接来完成。

CREATE TEMP TABLE numbers AS 
SELECT ROW_NUMBER() OVER() as "number"
FROM stl_scan
LIMIT 10;

CREATE TEMP TABLE data AS
SELECT 'a' value, 3 occurence
UNION ALL
SELECT 'b' value, 6 occurence;

SELECT data.value
      ,numbers.number instance
FROM data
JOIN numbers
ON data.occurence >= numbers.number
ORDER BY 1,2;

输出

 value | instance
-------+----------
 a     |        1
 a     |        2
 a     |        3
 b     |        1
 b     |        2
 b     |        3
 b     |        4
 b     |        5
 b     |        6

推荐阅读