#sql
Вопрос:
Таблица ввода
Col
1
2
3
4
5
Выход
1
2
2
3
3
3
4
4
4
4
5
5
5
5
5
Есть ли какой-либо способ добиться этого в sql без написания какой-либо функции ?
Ответ №1:
Вы могли бы использовать подход самостоятельного объединения:
SELECT t1.Col
FROM yourTable t1
INNER JOIN yourTable t2
ON t2.Col <= t1.Col
ORDER BY t1.Col1;
Логика здесь заключается в том, что каждое исходное Col
значение соединяется с любым количеством записей в той же таблице, которое представляет его значение. Если бы ваши фактические данные не были идеальной последовательностью, описанный выше подход все еще мог бы быть жизнеспособным, с некоторыми изменениями, с помощью аналитических функций.
Комментарии:
1. Что делать, если Col имеет повторяющиеся значения ? тогда…?
2. Вы можете запустить мой ответ, используя различные выборки в таблице, чтобы сначала удалить дубликаты.
3. но это не решит проблему, скажем, если у меня 2 раза по 2, то на выходе должно быть 4 раза по 2…. Не так ли ?
4. Вам следует открыть новый вопрос, так как на тот, который вы задали выше, уже дан ответ. Вы можете процитировать этот вопрос, если хотите.