我希望能够通过材料移动表、用于移动它的设备和时间来追溯,从一个字段中的指定值开始,并根据共享值在不同行的另一个字段中找到该值.
在下表中,我需要能够追溯,例如,从 EndCode 'M' 所有相关行一直追溯到 StartCode A。然后我可能希望能够追溯 EndCode 中的所有行'U' 回到 StartCode 'N'。
在表中,StartCode(材料)A 和 B 移动成为 EndCode C。EndCode C 然后成为 StartCodeD,然后与 StartCode E 一起移动成为 EndCode F 等。橙色/蓝色行表示材料移动组。
由此,我想创建一个新的表/视图,它将下一个事件的 StartedAt 时间作为一个名为“EndedAt”的新字段。它看起来像这样:
我创建了一个递归查询,它使用 ROW_NUMBER 和 CTE 将 StartedAt 作为新字段作为“EndedAt”引入。
然后,我尝试使用嵌套的 SELECT 语句查找与 EndCode 'M' 相关的所有 StartCode,以尝试环回表以在 StartCode 列中搜索所有相关的 EndCode。这只带来了几行。我会重复嵌套语句几次,它会通过不同的行。
我需要帮助来获取创建所需表/视图所需的所有相关开始/结束代码。
最终会在表格中附加一份报告,允许表格通过所选的 EndCode 参数(例如 M、U 等)进行过滤。
CREATE TABLE MyTable (
`StartCode` VARCHAR(1),
`StartedAt` DATETIME,
`EndCode` VARCHAR(1)
);
INSERT INTO MyTable (`StartCode`, `StartedAt`, `EndCode`)
VALUES
('A', '01/01/2019 01:00', 'C'),
('B', '01/01/2019 02:15', 'C'),
('C', '01/01/2019 03:00', 'F'),
('D', '01/01/2019 03:19', 'F'),
('E', '01/01/2019 04:00', 'F'),
('F', '01/01/2019 04:14', 'G'),
('G', '01/01/2019 05:00', 'J'),
('H', '01/01/2019 05:37', 'J'),
('I', '01/01/2019 05:45', 'J'),
('J', '01/01/2019 06:00', 'L'),
('K', '01/01/2019 06:09', 'L'),
('L', '01/01/2019 07:00', 'M'),
('N', '01/01/2019 09:20', 'P'),
('O', '01/01/2019 09:37', 'P'),
('P', '01/01/2019 09:45', 'Q'),
('Q', '01/01/2019 11:00', 'T'),
('R', '01/01/2019 11:10', 'T'),
('S', '01/01/2019 11:47', 'T'),
('T', '01/01/2019 11:58', 'U');