【问题标题】:Calculate running total and running total details计算运行总计和运行总计详细信息
【发布时间】:2018-10-25 09:29:42
【问题描述】:

在下表中,我需要获取运行总计以及运行总计的详细信息。

例如,在此表中为personal_id=12

总结:

  • 在 2018-10-19 21:23:00.567 Transaction_Type 为 assign 且 MACHINECOUNT =1,因此当时分配的机器总数为 1

  • at 2018-10-19 21:23:17.077 Transaction_Type 为 assign 且 MACHINECOUNT =1,此时分配的机器总数为 2

  • at 2018-10-19 21:26:33.513 Transaction_Type 为 assign 且 MACHINECOUNT =1,此时分配的机器总数为 3

  • 在 2018-10-19 21:26:58.980 Transaction_Type 是 unassign 并且 MACHINECOUNT =1,当时分配的机器总数是 2 等等 开

在细节方面:

  • 在第 2 行,machinecount 为 2,所以我需要包含哪些 batch_run_step_ids 来获取计数

  • 在第 3 行,机器计数为 3,因此我需要包含哪些批处理运行步骤来获取计数等

我可以通过人员使用 sum 函数分区获得摘要,但我需要获取 machinecount 的详细信息。例如,在摘要屏幕截图中,按时间分配的第二排机器是 2,我需要这两台机器的详细信息,即包含哪些步骤/行来获得此总数。

【问题讨论】:

  • 您想要聚合函数count 按DATE_TIME 和TRANSACTION_TYPE 列对数据进行分组吗?如果是的话,there are many questions answering that你提到摘要侧和细节侧,有两个不同的表吗?考虑编辑您的问题,添加额外信息、您尝试过的内容、遇到的问题。
  • @bradbury9 - 我已经更新了帖子的更多细节,请你看看

标签: sql sql-server-2012


【解决方案1】:

如果我理解正确,您需要一个累积条件和:

select t.*,
       sum(case when transaction_type = 'assign' then 1
                when transaction_type = 'unassign' then -1
                else 0
           end) over (partition by personnel_id
                      order by date_time
                     ) as machine_assigned_by_time
from t;

【讨论】:

    【解决方案2】:

    对于第一个查询,您需要使用SUM() 窗口函数在您的select语句中归档MACHINECOUNT,如下所示:

    摘要查询:

    select
        [your_columns],
        sum((case Transaction_Type when 'assign' then MACHINECOUN when 'unassign' then MACHINECOUN * -1 end))
        over(partition by personnel_id order by DATE_TIME)  as [RunningTotal]
    from
        [your_table]
    

    【讨论】:

    • 或常规分组,取决于预期的结果,恕我直言,这个问题有点不清楚。
    • @bradbury9 你是对的。解决方案取决于他需要的结果。他们都可能正确。
    • @MohammadMohabbati - 感谢您的帮助 :) 我还需要知道运行总数的详细信息,例如,如果 sum 为 2,则涉及哪个 batch_run_step_id 以获得该总和
    • @DeepakGoyal 如果您的意思是运行总计的顺序,这取决于您在order by 部分中使用的字段,在您的情况下我使用了DATE_TIME。您可以将其更改为需要获得运行总计的每一列。
    • @MohammadMohabbati- 我刚刚在这篇文章中添加了更多细节,请你看一下描述。
    猜你喜欢
    • 2017-10-04
    • 2023-03-23
    • 2015-02-22
    • 2012-07-03
    • 2020-06-30
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    相关资源
    最近更新 更多