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

Откуда: Новосибирск
Сообщений: 481
Дано. Две таблицы,
main(price)
detail(N)

Надо разложить Price на каждую строку из detail. т.е. получить для примера price=100, 3 строки вида:

1. N=1, 33.33
2. N=2, 33.33
3. N=3, 33.34 (в последней строке компенсируется остаток)

вопрос, как бы это хитро одиним запросом без курсоров и т.п.?
17 авг 09, 12:20    [7545662]     Ответить | Цитировать Сообщить модератору
 Re: Поделить на строки с компенсацией остатка  [new]
iljy
Member

Откуда:
Сообщений: 8711
Дмитрий16,
select case number when N - 1 then price - (price / N) * (N-1)
				   else price / N 
		end
from
(main cross join detail)
	join
(select number from master..spt_values where type = 'P') t2
	on number < N

примерно так, с округлением надеюсь сами разберетесь?
17 авг 09, 12:28    [7545711]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить