|
|
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Скажите, SQL может создавать нужные экземпляры классов, в каждый экземпляр толкать соответствующие данные, без или дополнительных расчетов, и сохранять в соответствующем формате файла? Потом из экселя обращаться к этому файлу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:05:17 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Бро, у тебя каша в голове, извини. СКУЛЬ это РЕЛЯЦИОННАЯ СУБД, предмет его управления -- ОТНОШЕНИЯ, по-простому наборы данных в виде таблиц. За очень редким исключением. ПОЭТОМУ ни о каких "экземпляров классов" у нас речи нет, и слава богу. Тебе надо придумать как представить твои данные в табличном виде, и как представить твои вычисления в виде обработки (обработок) наборов строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:08:31 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileНе нужна тебе функция, делай процедуру, в которой описана твоя логика. ИЛИ несколько процедур.И так, получается надо писать хранимую процедуру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:10:41 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Надо взять ручку, бумажку, и нарисовать, и расписать, что у тебя есть и что ты хочешь получить. Я так предполагаю, что у тебя есть набор параметров, который уникален для каждого "экземпляра класса" но в то же время вполне себе формализован. Также, что у тебя есть некая цепочка расчетов, которая должна быть сделана индивидуально для каждого набора параметров. А результаты рассчетов тебе надо куда то сложить, а потом посчитать некие агрегаты. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:16:41 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Cammomileptr128Вы флудите дальше. Все равно от Ваших постов толку никому нет. ))) Ну т.е. ты влез непонятно зачем Нет. Я влез с конкретной инфомацией из документации. А вот Вы, не написав совершенно ничего полезного для ТС, занимались исключительно флудом и тешили свое ЧСВ. Ошибаться могут все. И мне Вас жалко, если единственное, чем Вы можете себя порадовать, так это глумлением над чужими ошибками. Этакая форма публичного самоунижения ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:43:02 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Пока я вижу, что твоя ссылка на документацию полезна тс-у примерно никак. А вот мое "глумление" как-минимум поможет ему формализовать задачу и выбрать инструмент для её решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 17:45:51 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileНадо взять ручку, бумажку, и нарисовать, и расписать, что у тебя есть и что ты хочешь получить. Я так предполагаю, что у тебя есть набор параметров, который уникален для каждого "экземпляра класса" но в то же время вполне себе формализован. Также, что у тебя есть некая цепочка расчетов, которая должна быть сделана индивидуально для каждого набора параметров. А результаты рассчетов тебе надо куда то сложить, а потом посчитать некие агрегаты. Так?Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 18:36:47 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Ну тогда единственный принципиальный вопрос - как сформировать этот твой набор параметров в виде таблицы и сунуть его туда куда надо. Я имею в виду то, что пройтись по каждой строчке датасета и вызвать для нее некую процедуру это одна история, а сунуть набор строк внутрь процедуры, которая посчитает все - несколько другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2017, 18:43:32 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
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ИтоговаяРасчетнаяМераКак можно просуммировать по всем расчетным мерам (кроме РасчетнаяМераДругая )? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 12:54:12 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:06:26 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
авторКак вторая строка может обратиться к первой строке? Зависит от версии сервера. В современном мире LAG https://docs.microsoft.com/ru-ru/sql/t-sql/functions/lag-transact-sql Считать можно например последовательными апдейтами, или аплай на аплай на аплай. В зависимости от сложности твоих мер и обьемов данных. Кстати за что отвечает параметр "количество мер"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:15:59 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
И еще, совсем непонятно почему ты так зациклился на том, что "строка должна смотреть на предыдущую". У тебя не строка должна смотреть, а ВЫЧИСЛЕНИЕ. Думай функционально, Меры это же некие функции? Тебе надо посчитать Ф1, из ее рассчетов взять данные сунть в Ф2 и так далее, да? Ну и пожалуйста, можно например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 13:25:41 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileКстати за что отвечает параметр "количество мер"?У каждого SKU есть свой срок годности. РасчетнаяМера1 - остаток на 1-й день по сроку годности. РасчетнаяМера2 - остаток на 2-й по сроку годности. И т. д. То есть на определенную дату видим сколько продукции на остатке с определенным днем по сроку годности. И если на следующий день SKU не продан и срок годности прошел, то превращается в возврат - РасчетнаяМераДругая . То есть на каждый день видим непросроченный и просроченный остаток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:36:33 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileИ еще, совсем непонятно почему ты так зациклился на том, что "строка должна смотреть на предыдущую". У тебя не строка должна смотреть, а ВЫЧИСЛЕНИЕ. Думай функционально, Меры это же некие функции? - Чтобы посчитать остаток на 1-й день по сроку годности нужно вытащить отгрузку и продажу текущего дня. - Чтобы посчитать остаток на 2-й день по сроку годности нужно вытащить остаток на 1-й день по сроку годности предыдущего дня и продажу текущего дня. - Чтобы посчитать возврат нужно вытащить остаток на последний день по сроку годности. - Чтобы посчитать общий не просроченный остаток нужно сложить все остатки на разные дни по сроку годности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:47:07 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
Ну вот и отлично, у тебя 5 однотипных для всех видов товаров вычислений, которые ты можешь вызывать последовательно. Любым вменяемым способом. В конце-концов можно временную таблицу апдейтить нужное количество раз - отличный способ если делаешь процку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 15:51:06 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileНу вот и отлично, у тебя 5 однотипных для всех видов товаров вычислений , которые ты можешь вызывать последовательно. Любым вменяемым способом. Учитывая, что для меры Остатка на первый день по сроку годности по сравнению остальными мерами не смотрит на предыдущую дату. В конце-концов можно временную таблицу апдейтить нужное количество раз - отличный способ если делаешь процку.Что за процка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 16:00:04 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
[/quot]Что за процка?[/quot] Которую ты напишешь чтобы делать свои расчеты, или не напишешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:05:07 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
ferzmikk, Может вам оконные функции выучить, а не заниматься исхищрениеми с функциями ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2017, 17:47:32 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
a_voroninferzmikk, Может вам оконные функции выучить, а не заниматься исхищрениеми с функциями ?Я предполагал вначале, что пользовательская функция сможет решить данную задачу. С оконными функциями не работал еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 07:46:52 |
|
||
|
Пользовательская функция с цепными расчетами
|
|||
|---|---|---|---|
|
#18+
CammomileТебе надо посчитать Ф1, из ее рассчетов взять данные сунть в Ф2 и так далее, да? Ну и пожалуйста, можно например так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Следует учесть что у каждого SKU свой срок годности, следовательно, свое количество расчетных колонок. Важно чтобы количество Measure было динамическое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2017, 07:59:21 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39573868&tid=1690632]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
224ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 589ms |

| 0 / 0 |
