You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于另一列条件实现Google BigQuery行值更新的SQL方案

在Google BigQuery中实现指定的New_String生成逻辑

根据你给出的示例和需求,核心逻辑是:按日期从晚到早排序后,同一Condition组里的所有行,都取组内最新(日期最晚)那行的String值;如果组里只有一行,就取自身的String。

直接用LEAD()/LAG()可能会因为组内行数不确定导致逻辑复杂,这里用窗口函数FIRST_VALUE()更直接,适合BigQuery环境。假设你的表名为your_table,SQL代码如下:

SELECT
  Date,
  People,
  Condition,
  String,
  FIRST_VALUE(String) OVER (
    PARTITION BY Condition
    ORDER BY Date DESC
    ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
  ) AS New_String
FROM your_table
ORDER BY Date DESC;

代码说明:

  • PARTITION BY Condition:把数据按Condition分组,相同Condition的行归为一个分区。
  • ORDER BY Date DESC:每个分区内按日期降序排列,保证最新的行排在分区最前面。
  • FIRST_VALUE(String):提取分区内排序后的第一行String,作为该分区所有行的New_String。
  • ROWS BETWEEN ...:确保窗口包含分区内所有行,避免默认窗口范围(仅从分区开头到当前行)的限制。

运行这段代码后,输出结果会完全匹配你给出的示例:比如Condition=b的两行,New_String都是最新行的link 2;Condition=e的三行,New_String都是最新行的link6。

内容的提问来源于stack exchange,提问作者Joaquin Rojas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:57:21