powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пользовательская функция с цепными расчетами
20 сообщений из 45, страница 2 из 2
Пользовательская функция с цепными расчетами
    #39572945
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, SQL может создавать нужные экземпляры классов, в каждый экземпляр толкать соответствующие данные, без или дополнительных расчетов, и сохранять в соответствующем формате файла? Потом из экселя обращаться к этому файлу?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572946
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бро, у тебя каша в голове, извини.
СКУЛЬ это РЕЛЯЦИОННАЯ СУБД, предмет его управления -- ОТНОШЕНИЯ, по-простому наборы данных в виде таблиц.
За очень редким исключением.
ПОЭТОМУ ни о каких "экземпляров классов" у нас речи нет, и слава богу.
Тебе надо придумать как представить твои данные в табличном виде, и как представить твои вычисления в виде обработки (обработок) наборов строк.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572949
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileНе нужна тебе функция, делай процедуру, в которой описана твоя логика.
ИЛИ несколько процедур.И так, получается надо писать хранимую процедуру
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572952
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо взять ручку, бумажку, и нарисовать, и расписать, что у тебя есть и что ты хочешь получить.

Я так предполагаю, что у тебя есть набор параметров, который уникален для каждого "экземпляра класса" но в то же время вполне себе формализован.
Также, что у тебя есть некая цепочка расчетов, которая должна быть сделана индивидуально для каждого набора параметров.
А результаты рассчетов тебе надо куда то сложить, а потом посчитать некие агрегаты. Так?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572967
Фотография ptr128
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cammomileptr128Вы флудите дальше. Все равно от Ваших постов толку никому нет. )))
Ну т.е. ты влез непонятно зачем
Нет. Я влез с конкретной инфомацией из документации. А вот Вы, не написав совершенно ничего полезного для ТС, занимались исключительно флудом и тешили свое ЧСВ.
Ошибаться могут все. И мне Вас жалко, если единственное, чем Вы можете себя порадовать, так это глумлением над чужими ошибками. Этакая форма публичного самоунижения )
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572972
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока я вижу, что твоя ссылка на документацию полезна тс-у примерно никак. А вот мое "глумление" как-минимум поможет ему формализовать задачу и выбрать инструмент для её решения.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572992
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileНадо взять ручку, бумажку, и нарисовать, и расписать, что у тебя есть и что ты хочешь получить.

Я так предполагаю, что у тебя есть набор параметров, который уникален для каждого "экземпляра класса" но в то же время вполне себе формализован.
Также, что у тебя есть некая цепочка расчетов, которая должна быть сделана индивидуально для каждого набора параметров.
А результаты рассчетов тебе надо куда то сложить, а потом посчитать некие агрегаты. Так?Да
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39572997
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда единственный принципиальный вопрос - как сформировать этот твой набор параметров в виде таблицы и сунуть его туда куда надо.

Я имею в виду то, что пройтись по каждой строчке датасета и вызвать для нее некую процедуру это одна история, а сунуть набор строк внутрь процедуры, которая посчитает все - несколько другая.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573490
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileНадо взять ручку, бумажку, и нарисовать, и расписать, что у тебя есть и что ты хочешь получить.До этого прописывал в VBA с помощью классов. Описываю на языке реляционных таблиц.
Исходные данныеТТSKUДатаМера1Мера2ТТ1SKU101.10.2017101201ТТ1SKU102.10.2017102202ТТ1SKU103.10.2017103203ТТ1SKU104.10.2017104204ТТ1SKU105.10.2017105205ТТ1SKU106.10.2017106206ТТ1SKU107.10.2017107207ТТ1SKU108.10.2017108208ТТ1SKU109.10.2017109209ТТ1SKU110.10.2017110210ТТ1SKU201.10.2017111211ТТ1SKU202.10.2017112212ТТ1SKU203.10.2017113213ТТ1SKU204.10.2017114214ТТ1SKU205.10.2017115215ТТ1SKU206.10.2017116216ТТ1SKU207.10.2017117217ТТ1SKU208.10.2017118218ТТ1SKU209.10.2017119219ТТ1SKU210.10.2017120220...............

Справочная таблица по SKUSKUКоличествоРасчетныхМерSKU15SKU27SKU35......

Список экземпляров класса СценарийТТSKUДатаНачалаДатаОкончанияТТ1SKU101.10.201707.10.2017ТТ1SKU102.10.201708.10.2017ТТ1SKU103.10.201709.10.2017ТТ1SKU104.10.201710.10.2017ТТ1SKU201.10.201707.10.2017ТТ1SKU202.10.201708.10.2017ТТ1SKU203.10.201709.10.2017ТТ1SKU204.10.201710.10.2017............

Строки в экземплярах ДанныеТТSKUДатаНачалаДатаОкончанияДатаМера1Мера2ТТ1SKU101.10.201707.10.201701.10.2017101201ТТ1SKU101.10.201707.10.201702.10.2017102202ТТ1SKU101.10.201707.10.201703.10.2017103203ТТ1SKU101.10.201707.10.201704.10.2017104204ТТ1SKU101.10.201707.10.201705.10.2017105205ТТ1SKU101.10.201707.10.201706.10.2017106206ТТ1SKU101.10.201707.10.201707.10.2017107207ТТ1SKU102.10.201708.10.201702.10.2017102202ТТ1SKU102.10.201708.10.201703.10.2017103203ТТ1SKU102.10.201708.10.201704.10.2017104204ТТ1SKU102.10.201708.10.201705.10.2017105205ТТ1SKU102.10.201708.10.201706.10.2017106206ТТ1SKU102.10.201708.10.201707.10.2017107207ТТ1SKU102.10.201708.10.201708.10.2017108208.....................

Подстроки в экземплярах ДанныеТТSKUДатаНачалаДатаОкончанияДатаМера1Мера2 КоличествоРасчетныхМерРасчетнаяМераПолученноеЗначениеТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера1ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера2ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера3ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера4ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера5ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМераДругаяТТ1SKU101.10.201707.10.201701.10.20171012015ИтоговаяРасчетнаяМера...........................ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера1ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера2ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера3ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера4ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера5ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера6ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера7ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМераДругаяТТ1SKU201.10.201707.10.201701.10.20171112117ИтоговаяРасчетнаяМера..............................


1. Описание может быть не совсем оптимальное, то есть что то лишние, что то не достает. Из строки в колонки, или наоборот, из колонки в строки. Если что, то, пожалуйста, поправьте. Важно, чтобы структура была такая, что при выгрузке не тормозило сильно.

2. Для Строки в экземплярах Данные как строки будут обращаться в предыдущие строки? Важно, чтобы посчиталось последовательно: РасчетнаяМера1, РасчетнаяМера2, ..., РасчетнаяМера5, РасчетнаяМераДругая, ИтоговаяРасчетнаяМера.

ТТSKUДатаНачалаДатаОкончанияДатаМера1Мера2 КоличествоРасчетныхМерРасчетнаяМераПолученноеЗначениеТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера1ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера2
Как вторая строка может обратиться к первой строке?

ТТSKUДатаНачалаДатаОкончанияДатаМера1Мера2 КоличествоРасчетныхМерРасчетнаяМераПолученноеЗначениеТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера1ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера2ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера3ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера4ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМера5ТТ1SKU101.10.201707.10.201701.10.20171012015РасчетнаяМераДругаяТТ1SKU101.10.201707.10.201701.10.20171012015ИтоговаяРасчетнаяМера

ТТSKUДатаНачалаДатаОкончанияДатаМера1Мера2 КоличествоРасчетныхМерРасчетнаяМераПолученноеЗначениеТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера1ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера2ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера3ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера4ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера5ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера6ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМера7ТТ1SKU201.10.201707.10.201701.10.20171112117РасчетнаяМераДругаяТТ1SKU201.10.201707.10.201701.10.20171112117ИтоговаяРасчетнаяМераКак можно просуммировать по всем расчетным мерам (кроме РасчетнаяМераДругая )?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573513
Goga-Gola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
...OUTER APPLY (... 

?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573528
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКак вторая строка может обратиться к первой строке?
Зависит от версии сервера. В современном мире LAG
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/lag-transact-sql

Считать можно например последовательными апдейтами, или аплай на аплай на аплай. В зависимости от сложности твоих мер и обьемов данных.

Кстати за что отвечает параметр "количество мер"?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573538
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, совсем непонятно почему ты так зациклился на том, что "строка должна смотреть на предыдущую".

У тебя не строка должна смотреть, а ВЫЧИСЛЕНИЕ. Думай функционально, Меры это же некие функции?

Тебе надо посчитать Ф1, из ее рассчетов взять данные сунть в Ф2 и так далее, да?

Ну и пожалуйста, можно например так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @T Table 
( RN int, Code varchar (4), SomeParameter int  ) 

INSERT INTO @T SELECT 1, 'SKU1', 2
INSERT INTO @T SELECT 2, 'SKU1', 4
INSERT INTO @T SELECT 3, 'SKU1', 6
INSERT INTO @T SELECT 5, 'SKU2', 100
INSERT INTO @T SELECT 6, 'SKU2', 200

SELECT T.*, '#'
,  Measure1.M1
,  Measure2.M2 
,  Measure3.M3
FROM  @T T
CROSS APPLY (SELECT T.SomeParameter + 10 AS M1) Measure1 
CROSS APPLY (SELECT Measure1.M1 * 0.1  AS M2) Measure2 
CROSS APPLY (SELECT Measure1.M1  + Measure2.M2  AS M3) Measure3
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573718
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileКстати за что отвечает параметр "количество мер"?У каждого SKU есть свой срок годности. РасчетнаяМера1 - остаток на 1-й день по сроку годности. РасчетнаяМера2 - остаток на 2-й по сроку годности. И т. д. То есть на определенную дату видим сколько продукции на остатке с определенным днем по сроку годности. И если на следующий день SKU не продан и срок годности прошел, то превращается в возврат - РасчетнаяМераДругая . То есть на каждый день видим непросроченный и просроченный остаток.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573737
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileИ еще, совсем непонятно почему ты так зациклился на том, что "строка должна смотреть на предыдущую".

У тебя не строка должна смотреть, а ВЫЧИСЛЕНИЕ. Думай функционально, Меры это же некие функции?
- Чтобы посчитать остаток на 1-й день по сроку годности нужно вытащить отгрузку и продажу текущего дня.
- Чтобы посчитать остаток на 2-й день по сроку годности нужно вытащить остаток на 1-й день по сроку годности предыдущего дня и продажу текущего дня.
- Чтобы посчитать возврат нужно вытащить остаток на последний день по сроку годности.
- Чтобы посчитать общий не просроченный остаток нужно сложить все остатки на разные дни по сроку годности.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573742
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот и отлично, у тебя 5 однотипных для всех видов товаров вычислений, которые ты можешь вызывать последовательно. Любым вменяемым способом.

В конце-концов можно временную таблицу апдейтить нужное количество раз - отличный способ если делаешь процку.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573759
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileНу вот и отлично, у тебя 5 однотипных для всех видов товаров вычислений , которые ты можешь вызывать последовательно. Любым вменяемым способом. Учитывая, что для меры Остатка на первый день по сроку годности по сравнению остальными мерами не смотрит на предыдущую дату.

В конце-концов можно временную таблицу апдейтить нужное количество раз - отличный способ если делаешь процку.Что за процка?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573868
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[/quot]Что за процка?[/quot]
Которую ты напишешь чтобы делать свои расчеты, или не напишешь.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39573914
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Может вам оконные функции выучить, а не заниматься исхищрениеми с функциями ?
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39574168
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninferzmikk,

Может вам оконные функции выучить, а не заниматься исхищрениеми с функциями ?Я предполагал вначале, что пользовательская функция сможет решить данную задачу. С оконными функциями не работал еще.
...
Рейтинг: 0 / 0
Пользовательская функция с цепными расчетами
    #39574171
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CammomileТебе надо посчитать Ф1, из ее рассчетов взять данные сунть в Ф2 и так далее, да?

Ну и пожалуйста, можно например так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
SELECT T.*, '#'
,  Measure1.M1
,  Measure2.M2
,  Measure3.M3
FROM  @T T
CROSS APPLY (SELECT T.SomeParameter + 10 AS M1) Measure1 
CROSS APPLY (SELECT Measure1.M1 * 0.1  AS M2) Measure2 
CROSS APPLY (SELECT Measure1.M1  + Measure2.M2  AS M3) Measure3


Следует учесть что у каждого SKU свой срок годности, следовательно, свое количество расчетных колонок. Важно чтобы количество Measure было динамическое.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Пользовательская функция с цепными расчетами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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