行列转换

行转列

  • LATERAL
  • UNNEST

LATERAL

LATERAL 需要配合 Table Function 使用。

-- INNER JOIN
SELECT order_id, res
FROM Orders,
LATERAL TABLE(table_func(order_id)) t(res)

-- LEFT OUTER JOIN
SELECT order_id, res
FROM Orders
LEFT OUTER JOIN LATERAL TABLE(table_func(order_id)) t(res)
  ON TRUE

Table Function

table_function 返回的结果需要是 ARRAY 类型。

UNNEST

参考文档