Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 split int minutes to different rows  [new]
Ckey
Member

Откуда:
Сообщений: 56
Привет всем, помогите пожалуйста с решением.
Есть данные которые содержат minutes int значение.
Например: minutes = 124

Мне нужно разбить это значение в казные рядки.
Вот таким способом:
Minutes:
Row#1 = 60
Row#2 = 60
Row#3 = 4

где Row#1, Row#2 полный час и Row#3 остаток.

Заранее спасибо.
29 дек 15, 16:16    [18623610]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Declare @minutes int = 124;
Declare @subtr int = @minutes/60;

select 
	case  when @subtr = 0 then @minutes else 60 end as [row#1],
	case  when @subtr = 0 then 0 when @subtr = 1 then @minutes - 60 else 60 end as [row#2],
	case when @subtr < 2 then 0 else @minutes - 120 end as [row#3];
29 дек 15, 16:54    [18623827]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Ckey
Member

Откуда:
Сообщений: 56
Спасибо за ответ Konst_One,
можно пожалуйста данные разбить в рядки, не в колонки.

Также minute = 124 можеть быть разным, от чего и будет зависить количетво записей в рядке.

Заранее спасибо.
29 дек 15, 16:57    [18623846]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
придумайте алгоритм сами, идея понятна делите на 60 и смотрите сколько будет целых часов столько и будет строк в вашей таблице + возможный остаток 1 строка
29 дек 15, 17:00    [18623855]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Ckey,

Could you pleasedo this ?
29 дек 15, 17:00    [18623856]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Ckey,

Declare @minutes int = 124;

select	case when @minutes > (number + 1) * 60 then 60 else @minutes - number * 60 end as val
from	master..spt_values 
where	type = 'P'
	and @minutes > number * 60
29 дек 15, 17:02    [18623866]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
Minamoto
Ckey,

Declare @minutes int = 124;

select	case when @minutes > (number + 1) * 60 then 60 else @minutes - number * 60 end as val
from	master..spt_values 
where	type = 'P'
	and @minutes > number * 60



дополню, с вашего позволения

select number+1 as [Row],	case when @minutes > (number + 1) * 60 then 60 else @minutes - number * 60 end as [Value]
from	master..spt_values 
where	type = 'P'
	and @minutes > number * 60	
29 дек 15, 17:07    [18623890]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Andraptor
Member

Откуда: Ukraine, Kharkiv
Сообщений: 291
а оконная функция ntile не подойдет?
29 дек 15, 18:16    [18624219]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Andraptor
Member

Откуда: Ukraine, Kharkiv
Сообщений: 291
Предлагаю считать мой предыдущий комментарий - бредом.... вообще не о том думал :-)
30 дек 15, 07:42    [18625876]     Ответить | Цитировать Сообщить модератору
 Re: split int minutes to different rows  [new]
Ckey
Member

Откуда:
Сообщений: 56
Всем большое спасибо за помощь!
30 дек 15, 10:09    [18626281]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить