有没有办法在一个 select 语句中取消嵌套数组?

问题描述

我有以下几点:

CTE AS (
  SELECT 
    IssueID,CompanyName,Customer.ID FROM
 ( SELECT
    IssueID,REGEXP_EXTRACT_ALL(CompanyName,'[a-zA-Z]{3,4}[0-9]{3,4}') AS CompanyName
  FROM 
    `DWH.website` Website
  LEFT JOIN  `DWH.issues` AS Issue ON DWH.IssueID = Issue.ID) AS BASE

CROSS JOIN UNnesT (CompanyName) AS CompanyName
LEFT JOIN 
  DWH.Customer ON  CompanyName = Customer.CompanyName
)

我想知道是否有一种更有效的方式来写这个,特别是如果有一种在一个 Select 语句中 UNnesT 的方法

期望输出示例

问题ID 公司名称 ID
18677 谷歌 19435
18677 罗技 22345
34564 目标 76845

解决方法

它看起来像是一个更大查询的一部分(因为缺少一些像 DWHCustomer 这样的表),但是,假设它有效,您可以试试这个:

CTE AS (
  SELECT IssueID,CompanyName,Customer.ID 
  FROM `DWH.website` Website
  LEFT JOIN `DWH.issues` AS Issue ON DWH.IssueID = Issue.ID
  CROSS JOIN UNNEST(REGEXP_EXTRACT_ALL(CompanyName,'[a-zA-Z]{3,4}[0-9]{3,4}')) AS CompanyName
  LEFT JOIN DWH.Customer ON CompanyName = Customer.CompanyName
)