SQL функция - разделить число на количество частей - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу разбить число на части (ведра).

Например, когда я делю число 13 на 4, ожидаемый результат равен 4 сегментам (4,4,4,1)

13, разделенным на 4 части -> 4 (ожидается) выходные данные)

Например, когда я делю число 11 на 4, ожидаемый результат равен 3 сегментам (4,4,3)

11, разделенным на 4 части -> 3 (ожидаемый результат)

Например, когда я делю число 3 на 4, ожидаемый результат равен 1 сегменту 3, разделенному на 4 части -> 1 (ожидаемый результат)

Как мне сделать это в SQL функции

Ответы [ 3 ]

0 голосов
/ 13 февраля 2020

Вы можете использовать следующий код для получения контейнеров и количества: -

Declare 
    @InputNumber int, 
    @SplitBy int, 
    @Count int, 
    @Buckets VARCHAR(1000)

Set @InputNumber = 14
Set @SplitBy = 4
Set @Count = 0 

While @InputNumber > @SplitBy
Begin
    Set @Buckets = Convert(Varchar(10),@SplitBy) + ',' + isNULL( @Buckets,'')
    Set @InputNumber = @InputNumber - @SplitBy
    Set @Count =  @Count + 1
End

Select @Buckets +  Convert(Varchar(10),@InputNumber% @SplitBy) as Buckets , @Count + 1 as Count

Вывод: -

Buckets    Count
4,4,4,2     4
0 голосов
/ 13 февраля 2020

Трудно сказать, что именно вы ищете, но используя только функции SQL, вот один из способов. Попробуйте подключить разные номера.

declare @num integer;
set @num=11;
select @num, concat(replicate('4,',floor(@num/4)),@num%4), floor(@num/4)+1;
0 голосов
/ 13 февраля 2020

Вы можете попробовать этот способ:

DECLARE @Number INT = 13, @Devided INT = 4, @Count INT = 0

WHILE (@Number >= @Devided)   
BEGIN  
    set @Count = @Count + 1;
    set @Number = @Number - @Devided
    print @Devided
END

IF(@Number < @Devided)
BEGIN
    Set @Count = @Count + 1;
    print @Number
END

SELECT  @Count

Если вы просто хотите посчитать, вы можете попробовать этот способ, демо на БД <> fiddle

DECLARE @Number INT = 13, @Devided INT = 4, @Count INT

SET @Count = (@Number / @Devided)

IF(@Number % @Devided <> 0)
BEGIN
    Set @Count = @Count + 1;
END

SELECT  @Count 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...