提供 Main 组的子类型列表和范围编号

Provide a list of subtypes from Main group with range numbers

我有一个 table 命名的项目,其中包含分组级别 (G) 和子级别 (L) 的项目列表。但是,我只想查看子级别 (L) 数据,但每个子级别都附有相应的组名。分组项具有开始和结束编号范围。子级别列表的数字不是+1,而是以不特定的方式递增。同样对于每个级别行,开始和结束编号相同。

我正在使用 Microsoft SQL-Server Management Studio-2018

主要 table:项目

代码 Start_No End_No 类型
第 1 组 1001 1035 G
AA 1001 1001 L
BB 1005 1005 L
CC 1009 1009 L
DD 1020 1020 L
EE 1035 1035 L
组 2 1051 1090 G
FF 1051 1051 L
GG 1060 1060 L
HH 1075 1075 L
JJ 1090 1090 L
第 3 组 1095 1200 G
LL 1095 1095 L
OO 1120 1120 L
PP 1200 1200 L
第 4 组 1300 1800 G
QQ 1300 1300 L
1500 1500 L
厕所 1600 1600 L
ZA 1800 1800 L

我希望最终输出为:

期望的结果

代码组 代码 Start_No End_No
第 1 组 AA 1001 1001
第 1 组 BB 1005 1005
第 1 组 CC 1009 1009
第 1 组 DD 1020 1020
第 1 组 EE 1035 1035
第 2 组 FF 1051 1051
第 2 组 GG 1060 1060
第 2 组 HH 1075 1075
第 2 组 JJ 1090 1090
第 3 组 LL 1095 1095
第 3 组 OO 1120 1120
第 3 组 PP 1200 1200
第 4 组 QQ 1300 1300
第 4 组 1500 1500
第 4 组 厕所 1600 1600
第 4 组 ZA 1800 1800

这是我写的代码,但没有得到想要的结果。

    Select i.Code, c.Start_No, c.End_No 
    into #temp
    FROM items i
    Where i.Type = 'L' 
    
    Select  i2.Code, i2.Start_No, i2.End_No 
    FROM GLM_CHART i2
    WHERE
        EXISTS (SELECT * FROM #temp t where t.Start_No BETWEEN i2.Start_No AND i2.End_No)

谢谢

您可以使用 join:

select i.*, ig.code
from items i join
     items ig
     on i.start_no >= ig.start_no and
        i.end_no <= ig.end_no and
        ig.type = 'G'
where i.type = 'L';