【发布时间】:2020-12-14 18:07:42
【问题描述】:
我有一个 T-SQL 表,其中有许多转换状态。对于每个转换对(AVA_FROM -> AVA_TO)都有一个时间戳,我应该计算从状态到状态的每个持续时间。我不知道如何根据需要编写 SQL 脚本。
我在 SQL Fiddle 中创建表的语句下面写了。 AVA_TO = R-PC 中值的每条记录都是工作开始,而 AVA_FROM = R-PC 中值的每条记录都是工作停止。所有具有相同AVA_PRIMARYID 的记录属于同一个工单,因此需要将它们相加。你能帮我解决这个问题吗?
CREATE TABLE R5AUDVALUES
(
AVA_PRIMARYID nvarchar(8),
AVA_FROM nvarchar(8),
AVA_TO nvarchar(8),
AVA_CHANGED datetime,
AVA_UPDATED nvarchar(1)
);
INSERT INTO R5AUDVALUES (AVA_PRIMARYID, AVA_FROM, AVA_TO, AVA_CHANGED, AVA_UPDATED)
VALUES ('44730', 'Q', 'R-PC', '2020-12-14 12:00:00', '+'),
('44730', 'R-PC', 'SSP4', '2020-12-14 12:15:00', '+'),
('44730', 'SSP4', 'R-PC', '2020-12-14 12:30:00', '+'),
('44730', 'R-PC', 'SSP5', '2020-12-14 12:45:00', '+'),
('44730', 'SSP5', 'R-PC', '2020-12-14 13:00:00', '+'),
('44730', 'R-PC', 'C', '2020-12-14 13:15:00', '+')
结果应该如下所示:
WorkOrder, WorkStart, WorkStop
'44730', 2020-12-14 12:00:00', '2020-12-14 12:15:00',
'44730', 2020-12-14 12:30:00', '2020-12-14 12:45:00',
'44730', 2020-12-14 13:00:00', '2020-12-14 13:15:00'
【问题讨论】:
-
编辑您的问题并显示您想要的结果。
-
也许lead函数可以帮到你。
标签: sql sql-server join