172 похожих чатов

Прошу совета / помощи! Нагуглил код, который решает нужную мне задачу:

расчет себестоимости по системе FIFO (первый пришел - первый ушел).
Одна незадача, код написан под SQL Server.
Я же только в процессе изучения SQL, но в PostgreSQL.
Пытаюсь понять логику скрипта, чтобы применить для себя, но застопорился в части, где присваивают переменные.
Declare у меня в PostgreSQL не проходит.
Можете помочь адаптировать этот код под PostgreSQL?
Сам первоисточник: https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=04ac2580f562d38b7985f684017584fa

23 ответов

10 просмотров

Ну ращет по ФИФО непростая вещь, так что для начала круто слишком. Декларе 1 раз написать пробовал? Ну и погугли статью на хабре про отличия ПГ и скл сервер

А почему проще не сделать, создайте сиквенс и добавляете строки, а удаляйте в обратном порядке с returning *

Сергей- Автор вопроса
Alexey Erpilev
Ну ращет по ФИФО непростая вещь, так что для начал...

Там где присваиваются значения столбцам (правда без @) - все норм. Где daclare table - ошибка

Сергей- Автор вопроса
Pavel Chernoskutov
А почему проще не сделать, создайте сиквенс и доба...

Может и проще, если б еще понял о чем речь 😂

Сергей- Автор вопроса

Я, конечно, дико извиняюсь... но если найдете возможность😆, можете дать совет по моей проблеме... А то с каждым новым сообщением надежда вернуться к моему вопросу уменьшается в геометрической прогрессии А если серьезно, много где поднимал этот вопрос, но ответа никто не дал. На вас последняя надежда, ну, или на себя через пару лет, когда опыта будет достаточно.

Сергей
Я, конечно, дико извиняюсь... но если найдете возм...

Напишите словами что вам нужно получить. "Расчёт себестоимости по системе FIFO" это вообще непонятно о чём. При чём там порядок входа и выхода к себестоимости. Вникать в текст логики на T-SQL вряд ли кто захочет

Сергей- Автор вопроса
Sergey Bezrukov
Напишите словами что вам нужно получить. "Расчёт ...

Ясно. Думал, так проще будет, чем новое создавать. Постараюсь оформить вопрос...

Sergey Bezrukov
Напишите словами что вам нужно получить. "Расчёт ...

Ну это тот же партионный учет, но применительно к ценным бумагам кмк

Сергей- Автор вопроса
Alexey Erpilev
Ну это тот же партионный учет, но применительно к ...

Нет, не к ценным бумагам, к товару. Но принцип тот же...

Сергей
Нет, не к ценным бумагам, к товару. Но принцип тот...

никто за вас код писать не будет как написать running total - есть миллионы рецептов под все СУБД на свете с CTE, sum over, self-join-ами, курсорами и пр это же не упаковка рюкзака, условно, где реально на чистом SQL не очень получается а тут больше про обеспечение консистентности "остатков" в многопользовательской работе надо думать

Сергей- Автор вопроса
Roman Sergeev
никто за вас код писать не будет как написать runn...

Мне и не нужен готовый код. Поэтому я и привел первоисточник. Думал, опытным взглядом будет видно, что нужно изменить для PostgreSQL

Сергей- Автор вопроса
Sergey Bezrukov
Напишите словами что вам нужно получить. "Расчёт ...

Есть два файла: поставки и продажа Поставки: 01.01.22 поступило 7 единиц товара по 10 руб. 05.01.22 поступило 5 единиц товара по 15 руб. 03.02.22 поступило 10 единиц товара по 12 руб. Продажи: 10.01.22 продано 10 единиц товара (цена продажи нас не интересует) 08.02.22 продано 7 единиц товара Тогда себестоимость проданного товара составляет: В Январе: 7*10 + 3*15 = 115 руб. (7 шт. от 01.01.22 + 3 шт. от 05.01.22) В Феврале: 2*15 + 5*12 = 90 руб. (2 шт. от 05.01.22 + 5 шт. от 03.02.22) Хочется верить, что суть изложил понятно…

Сергей
Есть два файла: поставки и продажа Поставки: 01.01...

А почему не В Январе: 5*10 + 5*15 = 125 руб. (5 шт. от 01.01.22 + 5 шт. от 05.01.22) В Феврале: 2*10 + 5*12 = 80 руб. (2 шт. от 01.01.22 + 5 шт. от 03.02.22) - тут у Вас арифметическая ошибка и должно быть 90

Сергей- Автор вопроса
x893
А почему не В Январе: 5*10 + 5*15 = 125 руб. (5 ш...

Да, правильно 90 В январе 7 + 3, т.к. первая партия была на 7 ед. и она должна уйти в первую очередь. Если ее недостаточно, то переходим ко второй поступившей партии. и т.д.

Сергей
Да, правильно 90 В январе 7 + 3, т.к. первая парти...

Барыги так не делают. Сначала нужно продать то что дороже а дешевку можно и списать

Сергей- Автор вопроса
x893
Барыги так не делают. Сначала нужно продать то что...

Про барыг буду следующий код думать 😁 Пока с этим разобраться...

Сергей- Автор вопроса
Alexey Erpilev
ЦБ вменяет считать по ФИФО, нопремер.

В точку. И в уставе предприятия также прописывается, что считать для целей налогообложения...

Alexey Erpilev
ЦБ вменяет считать по ФИФО, нопремер.

ЦБ вменяет считать по ФИФО, нопремер. Премьер ? А что Премьер ?

x893
ЦБ вменяет считать по ФИФО, нопремер. Премьер ? А ...

Какое-то постановление ЦБ РФ, я в подоробности не вдавался - номер не помню. Так шеф бэк-офиса инвест-компании сказал, в кот-й я тогда работал.

Сергей
Мне и не нужен готовый код. Поэтому я и привел пер...

Дело в том, что опытному взгляду действительно видно. Поэтому "изменить" для PostgreSQL не получится, можно будет только написать заново, что называется, "по мотивам". Например, в T-SQL (и в приведённом вами скрипте) есть табличная переменная. В PostgreSQL такого понятия нет. Нужно будет переделывать с учётом этого. Достаточно легко, но тем не менее. Ну и т.д. А переписать - это уже таки работа.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта