sql - 匹配 SQL/BigQuery 中相同索引的数组元素

标签 sql arrays indexing google-bigquery matching

我想输出数组中与 SQL/BigQuery 中先前匹配期间的索引相匹配的元素

例如我有这5个字段。 Match_Home_Date 和 Match_Away_date 为 Array(String) 格式。

<表类=“s-表”> <标题> Match_ID Match_Home 客场比赛 Match_Home_Date Match_Away_Date <正文> 121 101, 102 103, 121 [2021年2月1日, 2021年5月1日] [2021年7月1日, 2021年9月1日] 131 131, 140 117, 115 [2021年2月2日, 2021年2月15日] [2021年2月20日, 2021年2月25日]

我想输出一个“最终日期”字段,其中当 Match_ID 与 Match_Home 或 Match_Away 匹配时,它将输出相同索引的相应 Match_Home_Date 或 Match_Away_Date。

输出应该是:

Final Date
01-09-2021
02-02-2021

最佳答案

考虑以下方法

select Match_ID, 
  (Match_Home_Date || Match_Away_Date)[offset(
  ( select offset
    from unnest(split(Match_Home) || split(Match_Away)) id with offset 
    where trim(id)  = '' || Match_ID
  ))] as Final_Date
from your_table            

如果应用于问题中的示例数据 - 输出为

enter image description here

您可以使用下面的cte来测试上面的

with your_table as (
  select 121 Match_ID, '101, 102' Match_Home, '103, 121' Match_Away, ['01-02-2021', '01-05-2021'] Match_Home_Date, ['01-07-2021', '01-09-2021'] Match_Away_Date union all
  select 131, '131, 140', '117, 115', ['02-02-2021', '02-15-2021'], ['02-20-2021', '02-25-2021'] 
)

关于sql - 匹配 SQL/BigQuery 中相同索引的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70105670/

相关文章:

mysql - 测试驱动开发检查数据库查询所涉及的方法

python - 异常相等性检查 - 使用 Numpy Where 查找抛出异常的索引

mysql - 在两个表上使用内连接,外键引用主表上的主 ID

java - 数组断言错误

javascript - Angular JS 访问基于存储在字符串中的 ng-model 的输入值

javascript - 使用 AngularJS 将输入值从 ng-repeat 插入数组

mysql - 使用 solr 索引和搜索 MySQL

带有两个标识符的 Oracle 条件索引

c# - 将 Excel 导入 ASP.NET 时的 OleDbDataAdapter 和列转换

sql - LIKE 匹配以数字结尾的字符串