假设我得到一个带一个字段的临时表是一个数组,如何将它转换为多行?
使用PostgreSQL,这可以通过UNNEST http://sqlfiddle.com/#!15/21673/19实现。
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT UNNEST(arr) FROM x在BigQuery中运行相同的查询,在3:8处运行语法错误:意外关键字UNNEST
似乎在BigQuery中,UNNEST只能放在FROM子句之后,
然后我尝试了这些:
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT * FROM UNNEST(x)这一条说UNNEST不能在3:22的表上应用;或者这个
WITH x AS (SELECT ARRAY[1,3,2] AS row)
SELECT * FROM UNNEST(x.arr)在3:22不能在表: x.arr上应用UNNEST
顺便说一下,当前的临时表x如下所示:
WITH x AS (SELECT ARRAY[1,2] AS row)
SELECT * FROM x
EOF
+--------------+
| row |
+--------------+
| [u'1', u'2'] |
+--------------+当我期望把它变成一排排的价值时:
+-----+
| row |
+-----+
| 1 |
| 2 |
+-----+发布于 2016-10-02 03:37:02
还有另一个版本--涉及“显式”UNNEST。
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr_item FROM x, UNNEST(arr) as arr_item发布于 2016-10-02 01:05:51
您可以通过将arr的元素与x的每一行进行交叉连接,即
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr FROM x, x.arr或者您可以更明确地将它写成交叉连接,而不是使用逗号。
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr FROM x CROSS JOIN x.arr发布于 2021-05-06 08:12:41
如果要按数组创建普通表,可以在FROM语句中使用UNNEST。
WITH x AS (
SELECT
*
FROM
UNNEST([1,2,3]) as num
)
select * from xhttps://stackoverflow.com/questions/39812791
复制相似问题