问题描述
我有以下几点:
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 |
解决方法
它看起来像是一个更大查询的一部分(因为缺少一些像 DWH
和 Customer
这样的表),但是,假设它有效,您可以试试这个:
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
)