【问题标题】:Increment row numbers for groups mySQL [duplicate]增加组mySQL的行号[重复]
【发布时间】:2021-04-02 14:03:54
【问题描述】:

我有 3 张桌子:

采购订单

PO ID PO Requestor
PO123 John Snow
PO567 Heather

采购订单行项目:

PO Line Item ID PO Line Item PO ID Ordered Quantity
1234 Bike PO123 3
1235 Laptop PO567 2
1236 BMW PO123 1

和收据:

Receipt Line ID PO Line Item ID Received Quantity Received Date
R123 1234 1 01-Dec-20
R567 1236 1 15-Dec-20
R567 1234 2 15-Dec-20
R987 1235 2 20-Dec-20

我想将 3 个表加入 1 个表,如下所示,这不是一项具有挑战性的任务:

PO ID PO Line Item No PO Line Item Name Ordered Quantity Receipt Line ID Received Quantity Received Date Requestor
PO123 1 Bike 3 R123 1 01-Dec-20 John Snow
PO123 1 Bike 3 R567 2 15-Dec-20 John Snow
PO123 2 BMW 1 R567 1 15-Dec-20 John Snow
PO567 1 Laptop 2 R987 2 20-Dec-20 Heather

在决赛桌中,我想添加一个新列:PO Line Item No。基本上,如果组 PO ID 相同,它将为每个 PO Line Item ID/Name 分配一个增量值。请注意,由于 1 个 PO Line Item 可以分为多个收货日期和行,因此最终表格可能包含同一 PO Line Item 的多行。在这种情况下,订单行项目编号应在最终表格中为这些记录显示相同的值

例如,PO123 有 2 个订单行项目:数量为 3 的自行车 (ID 1234) 和数量为 1 的 BMW (ID 1236)。在 2020 年 12 月 1 日,收到了 1 辆自行车,收据 ID 为 R123,在 15 -2020 年 12 月,收据 ID R567 收到 BMW 和其他 2 辆自行车以完成 PO123。所以在决赛桌中,因为在 2 个收据中收到了自行车,所以 PO123 有 2 条 Bike 记录。自行车的订单行项目编号应相同

请帮助我在不使用任何 Windows 功能的情况下处理此专栏。非常感谢

【问题讨论】:

  • 请以文本而不是图片链接的形式提供您的数据。也请向我们展示您到目前为止所做的尝试。
  • 目前,这篇文章读起来像是一个规范,而不是一个问题。

标签: mysql sql subquery window-functions


【解决方案1】:

我想你想要dense_rank()。从receipt表开始,基本思路是:

select r.*, 
    dense_rank() over(partition by po_id order by po_line_item_id) as rn
from receipt r

在早期版本中,您可以使用子查询来模拟:

select r.*, 
    (
        select count(distinct po_line_item_id) + 1
        from receipt r1 
        where r1.po_id = r.po_id and r1.po_line_item_id < r.po_line_item_id 
    ) as rn
from receipt r

【讨论】:

  • 最后的编辑说没有窗口功能。
  • Groupwise 排名已被多次询问,因此将作为重复问题关闭。
  • @Shadow:当然。我认为这里的挑战是确定问题本身。
  • 我不认为这是 GroupWise 排名,这是基于 2 个不同字段/分组的递增数字:PO ID 和 Receipt ID。我尝试了论坛中的大多数解决方案,但如果不使用窗口函数,我找不到解决方案。如果你能给我任何解决方案的链接,我真的很感激
  • @Wanderlust:您是否尝试过上述查询?运行它们时会发生什么?
猜你喜欢
  • 2018-05-14
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 2019-02-08
  • 2020-08-22
  • 2016-02-08
  • 2018-06-11
相关资源
最近更新 更多