![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oborotno-saldovaya vedemost [D6, D7, Paradox]
spogi © (2006-03-08 20:27:00)Zdrasti..
Xocu sozdat ob.-saldovaya vedemost.
primerno:
01.01.01 | +15
05.01.01 | -7
08.01.01 | +22
11.01.01 | +17
22.01.01 | -11
31.01.01 | +28
--------------
itogi: | 64 (Eto ya delayu s pomoshyu Sum.QRExpr)
A vot kak polucit:
s 10.01.01 po 20.01.01
Do perioda | V period | V konec perioda
--------------------------------------
30 +17 47
Pasibki...
msguns (2006-03-15 11:28:00) [1]>atruhin © (15.03.06 10:46) [29]
Можно все, что ты сказал, выразить одним словом.
atruhin (2006-03-15 10:46:00) [2]>>Сказать, для чего и кому нужна такая "убывающе-прибывающая" картина ?
Догадываюсь, что скажешь! :)
На самом деле в ресторанном учете не все так просто, там неизбежны постоянные пересортицы, ошибки ввода и т.д. Приходят документы, написано балык 10 кг, (копченый балык(деликатес), балык с.м. и т.д.) не понятно, начинают догонять, выяснять. В барах с винами та же пробемма снабженец ввел одно, в калькуляции поменяли название, бармен выбил другое по цене. Поэтому приходится поднимать движение товаров сверять, местами перепроводить :).
msguns (2006-03-15 09:56:00) [3]>atruhin © (15.03.06 05:55) [26]
Сказать, для чего и кому нужна такая "убывающе-прибывающая" картина ?
Danilka (2006-03-15 09:46:00) [4][25] программист (15.03.06 00:13)
Аналитические функции это чисто орокловая фича, а не стандарт sql, поэтому в других его нет.
По-крайней мере в микрософте точно нет, про сайбейс незнаю, не видел его.
atruhin (2006-03-15 05:55:00) [5]>>Видимо, кто-то очень "вумный" заказал ему подобый шедевр, в котором "будет все"
А что Вам в этом шедевр не нравится? У нас его называют документ движения товара. Т.е. в одном списке получаем остаток на начало периода, и список всех документов изменяющих остаток, на сколько изменился, какой стал. В системах ресторанского учета - один из самых часто используемых документов.
программист (2006-03-15 00:13:00) [6]> [23] Danilka © (14.03.06 14:08)
И такое работает? мдя.. а не в оракле такой самолет не летает???? типа в микрософте, сайбейзе?
msguns (2006-03-14 14:38:00) [7]Вообще-то это похоже на журнал регистрации документов, но лишь слегка. В бухгалтерии, насколько знаю, подобного "стандарта" нет. Есть складские документы (оборотная, сальдовая, накопительно-сальдовая, картотека с движением) и бухгалтерские (журналы, ордера, ведомости, шахматки). Но все это не то..
У него какой-то суррогат. Видимо, кто-то очень "вумный" заказал ему подобый шедевр, в котором "будет все"
Danilka (2006-03-14 14:08:00) [8][21] paul_k © (14.03.06 13:25)
SELECT id, tn, sum(s) over(order by id)-s pref_xxx, s, sum(s) over(order by id) xxx FROM test2
:)
[22] msguns © (14.03.06 13:30)
Вобщем, да. Тогда как его обозвать? :)
msguns (2006-03-14 13:30:00) [9]>Danilka © (14.03.06 12:36) [20]
>То, что просит автор, бухгалтера говорят, называецца "Журнал-ордер".
нет. Журнал ордер - это сводныйдокумент. Он же просит во-первых, подробных, во-вторых, накопительный
paul_k (2006-03-14 13:25:00) [10]понял то есть сумма идет нарастающим итогом. Отлично
это понятно вполне. а вот чтоб в строке было
SumIn | OpSum | SumOut
__________________________________________________________________
<SumOut из предидущей строки> | <сумма операции> | <SumIn+OpSum>
от это не понятно, блин..
Danilka (2006-03-14 12:36:00) [11][19] paul_k © (14.03.06 11:03)
> так то что я привел в примере и есть оборотно-сальдовая:)
> или я опять что-то спутал?
В каком примере? То, что просит автор, бухгалтера говорят, называецца "Журнал-ордер".
> а, кстати, в оракле как запрос выглядеть будет?
С помощью аналитических функций. Например, sum может выступать как аналитическая функция.
Самый простейший вариант:
CREATE TABLE test2
(id NUMBER(*,0),
tn VARCHAR2(100),
s NUMBER(15,2))
/
INSERT INTO test2
VALUES (1,'ttt',10)
/
INSERT INTO test2
VALUES (2,'ttr',12)
/
INSERT INTO test2
VALUES (3,'tr',5)
/
INSERT INTO test2
VALUES (4,'dd',8)
/
запрос, один из вариантов:
SELECT id, tn, s, sum(s) over(order by id) xxx FROM test2
возвращает:
ID TN S XXX
------------
1 ttt 10 10
2 ttr 12 22
3 tr 5 27
4 dd 8 35
paul_k (2006-03-14 11:03:00) [12]> [17] Danilka © (14.03.06 10:32)
так то что я привел в примере и есть оборотно-сальдовая:) или я опять что-то спутал?
а, кстати, в оракле как запрос выглядеть будет? любопытно, однако.. а то вдруг что-то подобное можно и не тока в оракле изобразить.
Danilka (2006-03-14 10:39:00) [13]а по теме тоже можно одним запросом, без всяких ХП и врем.переменных.
Но в орокле. :)
а как для парадокса расписано ишшо в [1].
Danilka (2006-03-14 10:32:00) [14][16] paul_k © (14.03.06 10:26)
ой, блин, я для оборотно-сальдовой ведомости, согласно теме, запрос написал.. :)
а у автора савсэм не она.
paul_k (2006-03-14 10:26:00) [15]> [14] Danilka © (14.03.06 10:02)
точно?? проверял? работает? нарастающий итог дает по входящим/исходящим остаткам?
не может быть...
по каждой записи должено идти изменение. то есть если бы автор взял период до 01/02/01 то должно было быть
> 01.01.01 | +15
> 05.01.01 | -7
> 08.01.01 | +22
> 11.01.01 | +17
> 22.01.01 | -11
> 31.01.01 | +28
> --------------
> itogi: | 64 (Eto ya delayu s pomoshyu Sum.QRExpr)
>
>
> s 10.01.01 po 20.01.01
>
> Do perioda | V period | V konec perioda
> --------------------------------------
> 30 +17 47
47 -11 36
36 +28 64
----------------------------------------
и таки в один запрос? Разъясни как детальнее плиз
Danilka (2006-03-14 10:16:00) [16]гы. then / when местами перепутал :))
Danilka (2006-03-14 10:02:00) [17]в local sql есть Case или нет? просто не помню. если есть, то, кажись, можно и одним запросом.
но с каждым месяцем формировацца будет медленнее и медленнее.
что-то типа:
select xxx,
sum(case then move_date < :begin_date when amount else 0 end) begin_amount,
sum(case then ((move_date between :begin_date and :end_date) and (amount>0)) when amount else 0 end) amount_plus,
sum(case then ((move_date between :begin_date and :end_date) and (amount<0)) when -amount else 0 end) amount_minus,
sum(amount) end_damount
from my_table
group by xxx
paul_k (2006-03-14 08:42:00) [18]> [11] vovnuke © (13.03.06 17:04)
> ну уж не от трепа, а в крайнем случае от не такого как вы
> понимания задачи,
> Откуда взялась цифра 30 в вопросе, если алгоритм такой как
> вы написали?
> s 10.01.01 po 20.01.01
>
> Do perioda | V period | V konec perioda
> --------------------------------------
> 30 +17 47
30 - входящий остаток (+15-17+22) - все что было ДО 10-го числа
с 10-го по 20-е одна операция, на +17 единиц учета, что и отражено в примере
msguns (2006-03-13 17:08:00) [19]>vovnuke © (13.03.06 17:04) [11]
Стандарт оборотной сальдовки таков:
Наименование товара Остаток на начало Приход Расход Остаток на конец
Движение дается суммарно.
То же, что подразумевает автор, называется накопительной ведомостью и имеет несколько другой вид. Что, очевидно, он не понимает
vovnuke (2006-03-13 17:04:00) [20]ну уж не от трепа, а в крайнем случае от не такого как вы понимания задачи,
Откуда взялась цифра 30в вопросе, если алгоритм такой как вы написали?
И вообще что надо получить если будет в период входить несколько дат из базы?