小编ban*_*ong的帖子

表连接匹配无重复

我有一种情况,我需要在一个位置匹配资产的到达和离开。问题是资产移动并不总是按时间顺序输入数据库,也没有任何当前的方法将数据库中的到达和离开联系在一起。

注意事项:

  • 每个移动(到达或离开)由具有唯一 ID (moveID) 的单行组成
  • 每行都将具有该项目唯一的项目 ID (itemID)。但是,每个项目在表中可能有多行(移动)。
  • 我想按时间顺序将资产的每个到达与出发相匹配,确保我们只将每个 moveID 与一个或更少的其他移动匹配(例如,我们需要允许到达和离开,仅到达或仅离开)。
  • 应根据位置进行匹配(例如,到达时的位置和货架或位置和子货架与出发时的位置和货架或位置和子货架相匹配)。
  • 这是一个 MS SQL Server

表的结构(类似)如下:

  CREATE TABLE Movements
 (
      MoveID int IDENTITY (1,1),
      ItemID int,
      EventType CHAR,
      moveTime datetime,
      LocID int,
      ShelfID int,
      altShelfID int
)
Run Code Online (Sandbox Code Playgroud)

我已经包含了测试数据:

SET IDENTITY_INSERT movements on

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(1,3,'A','2013-01-05 09:00',1,3,NULL)

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(2,3,'D','2013-01-06 13:00',1,3,NULL)

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(3,3,'A','2013-01-07 09:00',1,3,NULL)

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(4,3,'A','2013-01-15 09:00',1,3,NULL)

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(5,3,'D','2013-01-07 15:00',1,3,NULL)

INSERT INTO movements
(MoveID,ItemID,EventType,moveTime,LocID,ShelfID,altShelfID)
VALUES(6,3,'A','2013-01-16 09:00',2,NULL,7) …
Run Code Online (Sandbox Code Playgroud)

join sql-server

5
推荐指数
1
解决办法
9900
查看次数

标签 统计

join ×1

sql-server ×1