В SQL, как объединить две последовательные строки в одну, когда нет общего идентификатора?

#sql-server-2016

Вопрос:

Разделите значения между несколькими записями без ключа для их соединения. Порядок следования последователен.

Текущее содержимое таблицы SQL:

 RowNum    Value
1         10343  
2         20784
3         34523
4         22415
5         31245
6         11345
7         24588 
8         32946
 

Я хочу вернуть строки, объединяющие две последовательные записи, но только те, значения которых начинаются с 2 и 3. Нет общего значения столбца для группировки.

Желаемый результат:

 RowNums   Values
2-3       20784, 34523
4-5       22415, 31245
7-8       24588, 32946
 

Комментарии:

1. Тег с базой данных, которую вы используете.

Ответ №1:

Вы можете использовать lead() :

 select concat(rownum, '-', next_rownum) as rownums,
       concat(value, ', ', next_value) as values
from (select t.*,
             lead(rownum) over (order by rownum) as next_rownum,
             lead(value) over (order by value) as next_value
      from t
     ) t
where value like '2%' and next_value like '3%';
 

При этом используется стандартный синтаксис SQL. В зависимости от вашей базы данных могут быть различные варианты.