我有两个表,一个是物品(Item)表,另一个是物品范围(Item Range)表。在物品(Item)表中,所有的物品都存在于范围内,即(从和到)数字。我需要从物品范围(Item Range)表中排除那些数字,即(50到60和70到80)。
Declare @Item table
(
Id int primary key,
ItemId int,
[FROM] int,
[To] int
)
Declare @ItemRange table
(
Id int primary key,
ItemId int,
[FROM] int,
[To] int
)
INSERT INTO @Item
VALUES
(1,1,1,100),
(2,1,101,500),
(3,1,600,700)
INSERT INTO @ItemRange
VALUES
(1,1,50,60),
(2,1,70,80)
预期结果:
第一行显示1到49,因为50至60在表格的项目范围内...然后第二行显示61到69,因为70至80在表格的项目范围内...然后81到500以及600-800与表格的项目范围相同,因为在项目范围内没有范围行存在...如果结果中有任何一行在表格的项目范围内,则应将其拆分为两个记录...请帮我解决此问题。