Выбрать предыдущую и следующую строку с условием в MSSQL - PullRequest
0 голосов
/ 20 мая 2019
ID   BegCha EnCha   Val
10      20  30      250
10      30  40      140
10      50  60      189
20      10  20      250
20      20  30      157
20      30  40      199
20      40  50      70

Найти все строки, где значение выше 249

select * from table where Val >249
select One row previous and one row after if the values are 50 of 250
select * from table where id in (select * from table where Val >249) and Val > 149

То, что я ожидаю получить, указано ниже:

ID   BegCha EnCha   Val
10      20  30      250
10      30  40      140
10      50  60      189
20      10  20      250
20      20  30      157

Ответы [ 2 ]

1 голос
/ 20 мая 2019

С этой таблицей

create table prueba(
    id int ,
    BegCha int,
    EndCha int,
    Val int);

эти данные

id  BegCha  EndCha  Val
10  20      30      250
10  30      40      140
10  50      60      189
20  10      20      250
20  20      30      157
20  30      40      199
20  40      50      70

и этот запрос

WITH pruebaNumerada AS  
(  
    SELECT 
      ROW_NUMBER() OVER(ORDER BY id ASC) AS RowNumber,
      id, BegCha, EndCha, val
    FROM prueba 
) 
SELECT b.id, b.BegCha, b.EndCha, b.val
FROM pruebaNumerada a  
inner  join pruebaNumerada b on b.RowNumber  between a.RowNumber-1 and a.RowNumber+1
WHERE a.val >=250;  

Я получаю этот результат

id  BegCha  EndCha  val
10  20      30      250
10  30      40      140
10  50      60      189
20  10      20      250
20  20      30      157
0 голосов
/ 20 мая 2019

Ищете что-то подобное?

SELECT * 
FROM table 
WHERE id IN 
(
    SELECT DISTINCT id 
    FROM table 
    WHERE Val >249
) 
AND Val > 149
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...