|
SQL запрос
|
|||
---|---|---|---|
#18+
Мож ктонить встречался с такой задачей: нада получить бухгалтерский отчет - остаток на начало месяца, приход , расход, остаток на конец месяца, ну и приходы и расходы от определенных цехов и цехам . Имеется такая таблица PRRASH: PRDATA DATE, дата NAKL VARCHAR2(20), накладная KODCEH NUMBER(3), код цеха KODMLOM NUMBER(8), код продукта PRIH NUMBER(10,3), приход RASH NUMBER(10,3), расход KODPRIZ NUMBER(2), код признака продукта KODUCH NUMBER(6) код участка к ней таблица-справочник MLom: KodMLom Number, NameMLom VARCHAR2(20), KlassMLom VARCHAR2(20) Вот такой запрос неправильно считает данные на начало и конец периода select d.NameMlom, sum(decode(b.KODCEH,10,b.PRIH,0)) as Ot10, sum(decode(b.KODCEH,52,b.PRIH,0)) as Ot52, sum(decode(b.KODCEH,10,0,decode(b.KODCEH,52,0,b.Prih))) as OtWseh, sum(decode(b.KODCEH,10,b.Rash,0)) as Na10, sum(decode(b.KODCEH,52,b.Rash,0)) as Na52, sum(decode(b.KODCEH,10,0,decode(b.KODCEH,52,0,b.Rash))) as NaWseh, sum(b.PRIH) as ItogoPrih sum(b.RASH) as ItogoRash, sum(c.PRIH-c.RASH) as OstatokEnd, sum(a.PRIH-a.RASH) as OstatokBegin from PRRASH a, PRRASH b, PRRASH c, Mlom d where b.KodMlom=d.KodMlom and b.PrData>='01.09.02' and b.PrData<='01.10.02' and a.PrData<='01.09.02' and c.PrData<='01.10.02' group by d.NameMlom Был бы рад помощи, может метод када несколько псевдонимов одной таблице присваиваются здесь не подходит?? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2002, 13:53 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Господа, форум называется SQL.ru, вопрос тоже по SQL, база на Оракл, может вопрос туповатый??? или некорректно задан??? помогите плиз знатоки мож если не готовым запросом то хотябы умными мыслями!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 07:40 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
если я правильно понял идею, то, ИМХО, тебе надо разобраться с этим Код: plaintext 1. 2.
у тебя синонимы a, b, c - это одна и та же таблица, но: 1) эти синонимы не связаны между собой в условии where 2) в подчеркнутом месте разве не >= ? 3) с decode в начале - очень уж туманные цели. Поясни. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 08:16 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
По порядку 1. как нужно связать синонимы?? 2. В подчеркнутом месте правильно так как имеется ввиду остаток на начало периода то бишь весь приход на этот день минус весь уход. 3. С DECODE смысл получить приход и уход от определенных цехов по коду от 10, 52, и всех остальных Смысл всего запроса таков - считается остаток на начало периода, приход и уход в этом периоде, и остаток на конец периода ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 08:38 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
1) связывать их надо по ключевому полю. имеется такое? 2) не возражаю 3) вроде разобрался. Но лучше разбить на составные части. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 09:04 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
примари индекс есть PrData, Nakl как я свяжу эти псевдонимы, если в общем случае записи в них не повторяются, то есть на начало периода берем одни записи, в периоде другие, на конец периода третьи ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 10:27 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
По-моему тут должно быть 3 запроса, не связанные между собой: для остатка на начало периода (a), для прихода и ухода на период (b и d) и остаток на конец периода (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 11:08 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Само собой три отдельных запроса заработают запросто, дело в том что программа написана на Делфи 6 , для построения отчетов используется QuickReport 3.0.9, , и там я не представляю как соеденить три запроса , содержащих разное >1 кол - во записей, с группировкой ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 11:20 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
и мне кажется, что лучше будет разбить запросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 11:40 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Эт понятно что лучше как потом отчет сформировать в QuickReport??? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 13:55 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
я считаю, что тебе к КвикРепортистам надо обращаться ... Ораклисты тебе чем могли - помогли :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 14:10 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
2 Bin компонента QRSubDetail А вообще в толстой книжке Архангельского в главе 12.2 и 5.6.3 это есть. Немного правда, но тебе хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2002, 15:46 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Не пожалей 20$ - купи FastReport. Там как раз такие отчеты с неизвестным числом столбцов и строить ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2002, 19:10 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Неосторожно 1) sum(b.PRIH) когда хоть одно b.PRIH null, то вся сумма null. 2) здесь "and b.PrData>='01.09.02' and a.PrData<='01.09.02' " по семантике вероятно могут данные пропадать или могут появляться лишние (повторные подсчеты того же), когда несколько псевдонимов одной таблице - это несколько таблиц, где where нестрого. 3) ... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2002, 20:31 |
|
SQL запрос
|
|||
---|---|---|---|
#18+
Неправда твоя, аггрегатные функции null-значения игнорируют. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2002, 09:57 |
|
|
start [/forum/topic.php?fid=52&fpage=2839&tid=1993003]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 255ms |
total: | 397ms |
0 / 0 |