SQL的新功能,必须找到同一列的第一行和第二行的小时数差异

萨拉瓦南

例如。比较invoice_status_change_datetime的第一行和第二行,直到进入不同状态为止,必须捕获以小时为单位的持续时间。

**AP_WORK_ID    INVOICE_STATUS  INVOICE_STATUS_CHANGE_DATETIME   LAST_UPDATED_USER**
  1060565       Assigned        **2020-01-27 07:17:57.837**          xxxxxx
  1060565       Assigned        **2020-01-27 10:17:57.837**          yyyyyy
  1060565       In Progress       2020-01-29 01:08:56.943            xxxxxx
  1060565       Rejected          2020-01-28 07:17:57.837            xxxxxx
  1060565       Hold              2020-01-28 10:17:57.837            yyyyyy
  1060565       Closed            2020-01-29 01:08:56.943            xxxxxx

但是结果应该如下所示,因为我想将此结果与其他联接条件合并

**AP_WORK_ID    Assigned_hrs  In Progress_hrs  Query_Resolved_hrs Rejected_hrs hold_hrs closed_hrs**
  1060565       24            3 hrs            null               10hrs        5hrs     null

我使用lead()尝试了代码,我也得到了以小时为单位的输出,但是我不知道如何以上述格式进行转换:

SELECT isc.INVOICE_STATUS,
    isc.INVOICE_STATUS_CHANGE_DATETIME,
    DATEDIFF(HH, isc.INVOICE_STATUS_CHANGE_DATETIME, LEAD(isc.INVOICE_STATUS_CHANGE_DATETIME) OVER(
    ORDER BY isc.INVOICE_STATUS_CHANGE_DATETIME)) AS status_change_Hours       
FROM INVOICE_STATUS_CHANGE ISC
where isc.AP_WORK_ID = 1060565
GROUP BY isc.INVOICE_STATUS, isc.INVOICE_STATUS_CHANGE_DATETIME

我知道这有点复杂,可以熟练掌握SQL的人知道如何实现这一点

专线小巴

我正在考虑lead()和条件聚合:

select
    ap_work_id,
    sum(case when invoice_status = 'Assigned'    
        then datediff(hour, change_dt, next_change_dt) end) assigned_hrs,
    sum(case when invoice_status = 'In Progress' 
        then datediff(hour, change_dt, next_change_dt) end) in_progress_hrs,
    sum(case when invoice_status = 'Rejected'
        then datediff(hour, change_dt, next_change_dt) end) rejected_hrs,
    sum(case when invoice_status = 'Hold' 
        then datediff(hour, change_dt, next_change_dt) end) hold_hrs,
    sum(case when invoice_status = 'Closed' 
        then datediff(hour, change_dt, next_change_dt) end) closed_hrs
from (
    select 
        ap_work_id,
        invoice_status,
        invoice_status_change_datetime change_dt,
        lead(invoice_status_change_datetime) 
            over(partition by ap_work_id order by invoice_status_change_datetime) next_change_dt
    from mytable t
) t
group by ap_work_id

DB Fiddle上的演示

ap_work_id | Assigned_hrs | in_progress_hrs | rejected_hrs | hold_hrs | close_hrs 
---------:| -----------:| | --------------:| -----------:| | -------:| ---------:
   1060565 | 18 | 6 | 3 | 15 |       空值

结果与您显示的结果略有不同(我必须在状态为“已分配”的行上固定日期,该日期与其余数据不一致),但我认为这些实际上对您的样本数据是正确的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

打印第一行的第一列和最后一行的第二列,其中最后一列具有相同的值

来自分类Dev

如何使用awk将第一列和第二列的第一行打印为单列?

来自分类Dev

如何在Bootstrap中将第二行的第二列与相同的第一列或第一行对齐?

来自分类Dev

如何从第二列减去每一行并保持第一列

来自分类Dev

使用 Google Diff Match Patch 获取差异的第一行和第一列?

来自分类Dev

WordPress博客第一行2列第二行和连续行3列

来自分类Dev

AWK划分第一行和第二行

来自分类Dev

必须使用 linux 替换第一行第二列中的文本

来自分类Dev

一组中第一行和第二行之间的SQL平均时间

来自分类Dev

如何修改脚本以删除第一列和第二列底部的行?

来自分类Dev

SQL 来自同一列的上一行

来自分类Dev

SQL中连续的行之间的差异,包括第一行和最后一行?

来自分类Dev

根据 Pandas 中第二列的条件,用另一行的同一列的值填充特定行的列中的值

来自分类Dev

HTML 表格中第一行和第一列之后的行

来自分类Dev

Flexbox:当列的宽度不同时,是否可以将第一行=底部和第二行=顶部对齐?

来自分类Dev

带有图像的响应网格(第一列3行,第二列1行)

来自分类Dev

如何在awk中删除具有相同的第一列和较低的第二列的行?

来自分类Dev

SQL - 如何找到同一列之间的差异

来自分类Dev

SQL选择查询转换第一列为标题,第二列为行?

来自分类Dev

在引导表的第一行和第二行之间添加空间

来自分类Dev

网格画廊之间的第一行和第二行之间的空间

来自分类Dev

如何从第一行和第二行选择值

来自分类Dev

Oracle - 将第一列分组并保留在同一行

来自分类Dev

我如何找到同一列中每个重复项的最后一行索引?

来自分类Dev

提取符合条件的第一,第二和最后一行

来自分类Dev

在R中的每一行中找到最接近第一列中值的值

来自分类Dev

万一某些列重复,如何用第二行值更新第一行

来自分类Dev

如何在第一行列中打印第二行值?

来自分类Dev

sql-选择同一行中的顶行数据(如果同一列中的数据差小于'n'小时)

Related 相关文章

  1. 1

    打印第一行的第一列和最后一行的第二列,其中最后一列具有相同的值

  2. 2

    如何使用awk将第一列和第二列的第一行打印为单列?

  3. 3

    如何在Bootstrap中将第二行的第二列与相同的第一列或第一行对齐?

  4. 4

    如何从第二列减去每一行并保持第一列

  5. 5

    使用 Google Diff Match Patch 获取差异的第一行和第一列?

  6. 6

    WordPress博客第一行2列第二行和连续行3列

  7. 7

    AWK划分第一行和第二行

  8. 8

    必须使用 linux 替换第一行第二列中的文本

  9. 9

    一组中第一行和第二行之间的SQL平均时间

  10. 10

    如何修改脚本以删除第一列和第二列底部的行?

  11. 11

    SQL 来自同一列的上一行

  12. 12

    SQL中连续的行之间的差异,包括第一行和最后一行?

  13. 13

    根据 Pandas 中第二列的条件,用另一行的同一列的值填充特定行的列中的值

  14. 14

    HTML 表格中第一行和第一列之后的行

  15. 15

    Flexbox:当列的宽度不同时,是否可以将第一行=底部和第二行=顶部对齐?

  16. 16

    带有图像的响应网格(第一列3行,第二列1行)

  17. 17

    如何在awk中删除具有相同的第一列和较低的第二列的行?

  18. 18

    SQL - 如何找到同一列之间的差异

  19. 19

    SQL选择查询转换第一列为标题,第二列为行?

  20. 20

    在引导表的第一行和第二行之间添加空间

  21. 21

    网格画廊之间的第一行和第二行之间的空间

  22. 22

    如何从第一行和第二行选择值

  23. 23

    Oracle - 将第一列分组并保留在同一行

  24. 24

    我如何找到同一列中每个重复项的最后一行索引?

  25. 25

    提取符合条件的第一,第二和最后一行

  26. 26

    在R中的每一行中找到最接近第一列中值的值

  27. 27

    万一某些列重复,如何用第二行值更新第一行

  28. 28

    如何在第一行列中打印第二行值?

  29. 29

    sql-选择同一行中的顶行数据(如果同一列中的数据差小于'n'小时)

热门标签

归档