получите количество записей на основе одного значения

#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. Вам следует открыть новый вопрос, так как на тот, который вы задали выше, уже дан ответ. Вы можете процитировать этот вопрос, если хотите.