使用 SQL Server 2008。
我们得到一个代码,比如 020286,它为我们提供了一个起始结果集。起始数据:
Code L R G
020286 2 703 1
030383 3 6 0
031847 4 5 0
021932 7 10 0
022499 8 9 0
020068 229 310 1
020866 231 306 1
020524 232 241 0
030772 233 234 0
031787 235 236 0
031859 237 238 0
031947 239 240 0
020964 242 323 1
021215 253 342 1
030728 343 344 0
020990 345 346 0
022521 347 354 0
现在我想排除除给定代码之外的任何 G=1 (在同一结果集中)的行的 L 介于 L 和 R 之间的行(基本上对除给定代码之外的所有 G=1 执行“L 和 R 之间”) , 同时仍然保持所有 G=1。预期成绩:
Code L R G
020286 2 703 1
030383 3 6 0
031847 4 5 0
021932 7 10 0
022499 8 9 0
020068 229 310 1
020866 231 306 1
020964 242 323 1
021215 253 342 1
030728 343 344 0
020990 345 346 0
022521 347 354 0
这是一个带有起始数据的表变量。
declare @t table (Code nvarchar(10),L int, R int, G int)
insert into @t (Code, L, R, G)
select '020286',2,703,1 union
select '030383',3,6,0 union
select '031847',4,5,0 union
select '021932',7,10,0 union
select '022499',8,9,0 union
select '020068',229,610,1 union
select '020866',231,396,1 union
select '020524',232,241,0 union
select '030772',233,234,0 union
select '031787',235,236,0 union
select '031859',237,238,0 union
select '031947',239,240,0 union
select '020964',242,383,1 union
select '021215',253,342,1 union
select '030728',343,344,0 union
select '020990',345,346,0 union
select '022521',347,354,0
select * from @t