расчет себестоимости по системе FIFO (первый пришел - первый ушел).
Одна незадача, код написан под SQL Server.
Я же только в процессе изучения SQL, но в PostgreSQL.
Пытаюсь понять логику скрипта, чтобы применить для себя, но застопорился в части, где присваивают переменные.
Declare у меня в PostgreSQL не проходит.
Можете помочь адаптировать этот код под PostgreSQL?
Сам первоисточник: https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=04ac2580f562d38b7985f684017584fa
Ну ращет по ФИФО непростая вещь, так что для начала круто слишком. Декларе 1 раз написать пробовал? Ну и погугли статью на хабре про отличия ПГ и скл сервер
А почему проще не сделать, создайте сиквенс и добавляете строки, а удаляйте в обратном порядке с returning *
Там где присваиваются значения столбцам (правда без @) - все норм. Где daclare table - ошибка
Может и проще, если б еще понял о чем речь 😂
Я, конечно, дико извиняюсь... но если найдете возможность😆, можете дать совет по моей проблеме... А то с каждым новым сообщением надежда вернуться к моему вопросу уменьшается в геометрической прогрессии А если серьезно, много где поднимал этот вопрос, но ответа никто не дал. На вас последняя надежда, ну, или на себя через пару лет, когда опыта будет достаточно.
Напишите словами что вам нужно получить. "Расчёт себестоимости по системе FIFO" это вообще непонятно о чём. При чём там порядок входа и выхода к себестоимости. Вникать в текст логики на T-SQL вряд ли кто захочет
Ясно. Думал, так проще будет, чем новое создавать. Постараюсь оформить вопрос...
Ну это тот же партионный учет, но применительно к ценным бумагам кмк
Нет, не к ценным бумагам, к товару. Но принцип тот же...
никто за вас код писать не будет как написать running total - есть миллионы рецептов под все СУБД на свете с CTE, sum over, self-join-ами, курсорами и пр это же не упаковка рюкзака, условно, где реально на чистом SQL не очень получается а тут больше про обеспечение консистентности "остатков" в многопользовательской работе надо думать
Мне и не нужен готовый код. Поэтому я и привел первоисточник. Думал, опытным взглядом будет видно, что нужно изменить для PostgreSQL
Есть два файла: поставки и продажа Поставки: 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) Хочется верить, что суть изложил понятно…
А почему не В Январе: 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
Да, правильно 90 В январе 7 + 3, т.к. первая партия была на 7 ед. и она должна уйти в первую очередь. Если ее недостаточно, то переходим ко второй поступившей партии. и т.д.
Барыги так не делают. Сначала нужно продать то что дороже а дешевку можно и списать
Про барыг буду следующий код думать 😁 Пока с этим разобраться...
ЦБ вменяет считать по ФИФО, нопремер.
В точку. И в уставе предприятия также прописывается, что считать для целей налогообложения...
ЦБ вменяет считать по ФИФО, нопремер. Премьер ? А что Премьер ?
А премьер по LIFO...
Какое-то постановление ЦБ РФ, я в подоробности не вдавался - номер не помню. Так шеф бэк-офиса инвест-компании сказал, в кот-й я тогда работал.
Вот и пусть код дают.
Дело в том, что опытному взгляду действительно видно. Поэтому "изменить" для PostgreSQL не получится, можно будет только написать заново, что называется, "по мотивам". Например, в T-SQL (и в приведённом вами скрипте) есть табличная переменная. В PostgreSQL такого понятия нет. Нужно будет переделывать с учётом этого. Достаточно легко, но тем не менее. Ну и т.д. А переписать - это уже таки работа.
Обсуждают сегодня