我是sql新手,如果有任何建议我都会很感激!
我有一个存储订单历史记录的表。它包括以下列: ORDERID
, ORDERMILESTONE
, NOTES
, TIMESTAMP
.
有一个 TIMESTAMP
每 ORDERMILESTONE
在一个 ORDERID
反之亦然。
我想做的是比较 TIMESTAMP
这是肯定的 ORDERMILESTONE
以获取从开始到完成或从订单到装运等所需的时间。
为了得到这个,我必须收集一个特定的 ORDERID
,然后以某种方式遍历它们。。。当我试图通过宣布 TVP
对于每个 ORDERID
,但这需要更多的时间,因为我的一些数据集有20000行长。
你推荐什么?提前谢谢。
编辑:
在我的问题中,我想找出订单在qa中花费的天数。例如,一旦下了订单,我们就需要发出请求的项目,然后将其发送给qa。所以有一个里程碑“处理”和一个里程碑“qa”。该项目可以在“处理”然后“质量保证”一次,并得到出货,或它可以被送回质量保证几次,或来回之间的“处理”和“工程”。我想找出项目在qa中花费的总时间。
以下是一些示例数据:
医嘱ID |医嘱里程碑|备注|时间戳
43 |放置|新订购的定制时光机| 07-11-2020 12:00:00
43 |加工|首次装配| 07-11-2020 13:00:05
43 | qa |发送至qa | 07-11-2020 13:30:12
43 |工程部|工程部正在修理时光机上的曲柄,它能跳过偶数年| 07-12-2020 13:00:02
43 | qa |发送给qa测试新曲柄。时间机器不应该再跳过几年07-13-2020 16:00:18
0332at |放置|定制彩虹色光剑| 07-06-2020 01:00:09
0332at |加工|光剑在建| 07-06-2020 06:00:09
0332at | qa |光剑测试| 07-06-2020 06:00:09
我要的是每个订单在qa上花费的总天数。
所以我想我可以创建一个包含每个qa里程碑和下一个里程碑的查找表。然后总结每个qa里程碑和随后的qa里程碑之间的差异。我的主要问题是,我不一定知道有多少次的项目将需要发送给qa对每个订单。。。
3条答案
按热度按时间koaltpgm1#
为了得到时间来完成一个特定的里程碑的所有命令,你可以做
8e2ybdfx2#
假设您使用的是sql server,并且里程碑没有重复,那么您可以使用:
如果您想在每一行上更普遍地执行此操作,可以使用累积聚合函数:
7jmck4yq3#
您可以创建一个查找表,其中包含一个里程碑并给出上一个里程碑。然后,可以左键联接到它,左键联接回原始表,以获取上一个里程碑处相同顺序的行,并比较日期(sqlfiddle):