powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSQL зависимость расчета от предыдущей строки
12 сообщений из 12, страница 1 из 1
MSQL зависимость расчета от предыдущей строки
    #39707052
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, знаю как через курсор, но долго, да и курсор не охота использовать
Необходимо складывать предыдущие строки и когда сумма будет равна или больше единицы, записать значение целого числа.
Во вложение файл

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707057
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во вложении было вот это:
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707064
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичВо вложении было вот это:
Спасибо

Вот добавил еще столбцы, может так будет понятней
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707076
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,

пронумеровать row-number-ом, и потом рекурсивным СТЕ, - будет проще всего
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;with cte as (
	select
		[buffer]=case when [plan]>=1 then 0 else [plan] end
		,plan_smalli=case when [plan]>=1 then floor([plan]) end
		, ... 
	from T 
	where rn=1
	
	union all
	
	select
		[buffer]=case when cte.[buffer]+T.[plan]>=1 then 0 else cte.[buffer]+T.[plan] end
		,plan_smalli=case when cte.[buffer]+T.[plan]>=1 then floor(cte.[buffer]+T.[plan]) end
		, ...
	from cte inner join T on cte.rn=T.rn-1)
select * from cte order by rn 
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707077
iiyama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,
Немного офф,
Смешанные ощущения, вроде вы не новичек и писать Вам про скрипты создания и заполнения данными-лишнее с другой стороны ни того ни даже версии сервера не видно, чуднО

А по теме- нарастающий итог давно считается без курсоров, посмотреть "предыдущее" значение с явным определенным порядком тоже не проблема
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707079
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Focha,

Код: sql
1.
2.
3.
4.
5.
6.
with a as
    (select * from(values(201908,0.298645),(201907,0.395862),(201906,0.496441),(201905,0.594498),(201904,0.613721),(201903,0.72629)
                        ,(201902,0.819897),(201901,1.184565))a(a,b))
select *,case when floor(c)>floor(c-b) then floor(c)-floor(c-b) end d
  from (select *,sum(b)over(order by a desc rows between unbounded preceding and current row) c
          from a)b
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707084
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iiyamaFocha,
Немного офф,
Смешанные ощущения, вроде вы не новичек и писать Вам про скрипты создания и заполнения данными-лишнее с другой стороны ни того ни даже версии сервера не видно, чуднО

А по теме- нарастающий итог давно считается без курсоров, посмотреть "предыдущее" значение с явным определенным порядком тоже не проблема

Версия:
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4297.0 (X64)
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707092
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПосетительFocha,

Код: sql
1.
2.
3.
4.
5.
6.
with a as
    (select * from(values(201908,0.298645),(201907,0.395862),(201906,0.496441),(201905,0.594498),(201904,0.613721),(201903,0.72629)
                        ,(201902,0.819897),(201901,1.184565))a(a,b))
select *,case when floor(c)>floor(c-b) then floor(c)-floor(c-b) end d
  from (select *,sum(b)over(order by a desc rows between unbounded preceding and current row) c
          from a)b



Да, крутая штука, но увы я ранее не указал версию сервера, в моей версии 2008 это не работает
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707096
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FochaПосетительFocha,

Код: sql
1.
2.
3.
4.
5.
6.
with a as
    (select * from(values(201908,0.298645),(201907,0.395862),(201906,0.496441),(201905,0.594498),(201904,0.613721),(201903,0.72629)
                        ,(201902,0.819897),(201901,1.184565))a(a,b))
select *,case when floor(c)>floor(c-b) then floor(c)-floor(c-b) end d
  from (select *,sum(b)over(order by a desc rows between unbounded preceding and current row) c
          from a)b




Да, крутая штука, но увы я ранее не указал версию сервера, в моей версии 2008 это не работает

Вы не знаете, как реализовать нарастающий итог в 2008?
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707097
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FochaПосетительFocha,

Код: sql
1.
2.
3.
4.
5.
6.
with a as
    (select * from(values(201908,0.298645),(201907,0.395862),(201906,0.496441),(201905,0.594498),(201904,0.613721),(201903,0.72629)
                        ,(201902,0.819897),(201901,1.184565))a(a,b))
select *,case when floor(c)>floor(c-b) then floor(c)-floor(c-b) end d
  from (select *,sum(b)over(order by a desc rows between unbounded preceding and current row) c
          from a)b



Да, крутая штука, но увы я ранее не указал версию сервера, в моей версии 2008 это не работает
гугл - накопительный итог, даст варианты на любой sql
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707115
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
MSQL зависимость расчета от предыдущей строки
    #39707116
Фотография Focha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПосетительFocha,

Код: sql
1.
2.
3.
4.
5.
6.
with a as
    (select * from(values(201908,0.298645),(201907,0.395862),(201906,0.496441),(201905,0.594498),(201904,0.613721),(201903,0.72629)
                        ,(201902,0.819897),(201901,1.184565))a(a,b))
select *,case when floor(c)>floor(c-b) then floor(c)-floor(c-b) end d
  from (select *,sum(b)over(order by a desc rows between unbounded preceding and current row) c
          from a)b


Спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSQL зависимость расчета от предыдущей строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]