提供来自 Main 组的子类型列表以及范围编号
Posted
技术标签:
【中文标题】提供来自 Main 组的子类型列表以及范围编号【英文标题】:Provide a list of subtypes from Main group with range numbers 【发布时间】:2021-06-18 17:56:06 【问题描述】:我有一个名为 Items 的表,其中包含分组级别 (G) 和子级别 (L) 的项目列表。但是,我只想查看子级别 (L) 数据,但每个子级别都附加了相应的组名称。分组项具有开始和结束编号范围。子级别列表的数字不是+1,而是以无特定方式递增。同样对于每一层行,开始和结束编号是相同的。
我正在使用 Microsoft SQL-Server Management Studio-2018
主表:项目
Code | Start_No | End_No | Type |
---|---|---|---|
Group 1 | 1001 | 1035 | G |
AA | 1001 | 1001 | L |
BB | 1005 | 1005 | L |
CC | 1009 | 1009 | L |
DD | 1020 | 1020 | L |
EE | 1035 | 1035 | L |
Group 2 | 1051 | 1090 | G |
FF | 1051 | 1051 | L |
GG | 1060 | 1060 | L |
HH | 1075 | 1075 | L |
JJ | 1090 | 1090 | L |
Group 3 | 1095 | 1200 | G |
LL | 1095 | 1095 | L |
OO | 1120 | 1120 | L |
PP | 1200 | 1200 | L |
Group 4 | 1300 | 1800 | G |
1300 | 1300 | L | |
TU | 1500 | 1500 | L |
WC | 1600 | 1600 | L |
ZA | 1800 | 1800 | L |
我希望最终输出为:
期望的结果
Code Group | Code | Start_No | End_No |
---|---|---|---|
Group 1 | AA | 1001 | 1001 |
Group 1 | BB | 1005 | 1005 |
Group 1 | CC | 1009 | 1009 |
Group 1 | DD | 1020 | 1020 |
Group 1 | EE | 1035 | 1035 |
Group 2 | FF | 1051 | 1051 |
Group 2 | GG | 1060 | 1060 |
Group 2 | HH | 1075 | 1075 |
Group 2 | JJ | 1090 | 1090 |
Group 3 | LL | 1095 | 1095 |
Group 3 | OO | 1120 | 1120 |
Group 3 | PP | 1200 | 1200 |
Group 4 | 1300 | 1300 | |
Group 4 | TU | 1500 | 1500 |
Group 4 | WC | 1600 | 1600 |
Group 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)
谢谢
【问题讨论】:
【参考方案1】:您可以使用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';
【讨论】:
感谢您重新排序问题中的表格格式。我相信你的意思是和 ig.type = 'G' 其中 i.type = 'L';但是输出是为子行的每一行重复组名,而不是为其子行重复特定的组名 感谢代码工作。我的数据有一个额外的分组层,这引起了我最初的困惑。再次感谢。以上是关于提供来自 Main 组的子类型列表以及范围编号的主要内容,如果未能解决你的问题,请参考以下文章