Вот способ сделать это. Если предположить, что вы хотите, чтобы диапазоны бинов были 0,1,0,2,0,3, ... до 1. Затем вы сгенерируете 10 строк, используя блок row_gen и устанавливая step_size как row_number / 10, а также устанавливая lower_limit и upper_limit для каждый бин.
После этого вам нужно будет проверить, подходит ли значение для col1 в соответствующую нижнюю и верхнюю границы бина следующим образом. (Я использовал левое соединение, чтобы включить те условия, в которых значение col1 равно нулю. Если это маловероятный сценарий, его можно изменить на обычное соединение)
with row_gen
as (select top 10
,row_number() over(order by 1) as bin_id
,row_number() over(order by 1)/10 as as lower_limit
,row_number() over(order by 1)/10 + 1/10 as as upper_limit
from table /*any table that has 10 rows*/
)
select a.*
,b.bin_id
from your_table a
left join row_gen b
on a.col1 between b.lower_rnk and b.upper_rnk