代码之家  ›  专栏  ›  技术社区  ›  Bak

在Postgres中恢复上述值

  •  0
  • Bak  · 技术社区  · 7 年前

    我想按名称恢复上面的值。

    看看桌子。

    enter image description here

    我想在上个星期前得到一个列中的结果。

    谢谢你

    1 回复  |  直到 7 年前
        1
  •  0
  •   JNevill    7 年前

    这样的做法应该管用:

    SELECT number_week,
      name,
      LAG(number_week, 1, number_week) OVER (PARTITION BY name ORDER BY number_week) as before_last_number_week
    FROM t1;
    

    sqlfiddle version

    这就利用了 Lag() 窗口功能。“窗口”是一组可以选择排序的记录。在这里我们按 Name (两组/两个窗口)我们按 week_number 是的。然后用 滞后() 我们选择以前记录的周数(在该窗口中)。 滞后() 可以采用默认值,因此我们指定默认值是当前记录的 周数 是的。