|
|
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые! Досталось вот наследство, а как подступиться, по чайниковости своей, не знаю, не пинайте новичка помогите, кто чем может: Есть несколько таблиц, надо получить сводный отчет. table t_schet( id_schet integer Identity) table t_vipiska(id_vipiska integer, _date smalldatetime, schet integer FK references t_schet.id_schet , vhod numeric(20,4), debet numeric(20,4), credit numeric(20,4), ishod numeric(20,4) ) table t__provodka(id_provodka integer identity, _date smalldatetime, summa numeric(20,4), schet_out integer FK references t_schet.id_schet ,schet_in integer FK references t_schet.id_schet , vipiska_out integer, vipiska_in integer ) По каждому счету делаются проводки, результат которых отражается в выписке (одна на каждую дату для одного счета), а в проводке указывается, в какой выписке она "участвует". Так вот, требуется составить оборот по данному счету за некий период (начало, конец), чтобы выглядело это примерно так: ДатаНачала ВходящееСальдо Дебет Кредит _________________________сумма1 _________________________сумма2 _________________________суммаN _________________________________сумма1 _________________________________сумма2 _________________________________сумма1N ДатаОкончания ___________________________ Исходящее ДатаНачала2 etc etc Проблема еще в том, что все это нужно всунуть в один recordset, обязятельно, т.е. напротив сумма1 должен быть NULL, как я понимаю, или что-то подобное... Может, это реализуется как view, а потом уже оттуда селектить, не знаю, помогите, а? (очень-очень нужно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 16:30:07 |
|
||
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
Уважаемый montanero! На будущее, пожалуйста, старайтесь более понятно оформлять данные. Ох, как трудно работать с ненормализованными базами... Половина вопросов форума о хитрых запросах именно из-за этого. Это не к Вам, у Вас наследство... ГДЕ у Вас основная информация о сумме операции? В t__provodka? А зачем нужны debet numeric(20,4) и credit numeric(20,4)? Там та же сумма? Я так понял, что summa numeric(20,4), всегда положительное число? Мне не очень понятно о каких счетах идет речь. Это бухгалтеские счета, или номера документов? С толку сбивает table t_schet( id_schet integer Identity ) Под schet_out - schet_in подразумевается счет кредита-дебета? Но почему они int... А что такое vhod и ichod? Именно это и есть бухгалтерские счета? Пожалуйста, дайте структуру с комментариями. (Специально для завсегдатаев. А не слишком ли я туп? Правда жена еще не приехала, зато мать уехала. Есть уважительная причина у сироты.) Конкретно ничего не могу написать, но вот стратегия создания оборотно-сальдовой ведомости Select sum(Debet-Credit) as SaldoIn, cast(0 as numeric(20,4) as Debet, cast(0 as numeric(20,4) as Credit into #temp where _Date <@StartDate union Select cast(0 as numeric(20,4), sum(Debet), cast(0 as numeric(20,4) where _Date between @StartDate and @EndDate union Select cast(0 as numeric(20,4), cast(0 as numeric(20,4), sum(Debet) where _Date between @StartDate and @EndDate select sum(SaldoIn) as SaldoIn, sum(Debet) as Debet, sum(Credit) as Credit from #temp Писано на коленке, поэтому возможны синтаксические ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 19:02:35 |
|
||
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
Направление понял, спасибо! Оказывается все проще, чем я думал... Так, с пояснениями: В описаниях таблиц указаны не все поля, только те, которые нужны в данном случае, поэтому могли возникнуть вопросы. Это бух. проводки... debet и credit нужны вот зачем - это общие обороты по счету, дебет и кредит, соответственно, выписка может формироваться из нескольких проводок, тогда debet и credit суммируются, по отдельности, естественно. Это, скорее, справочная информация. summa - да, положительное. schet_out и schet_in - это id счета, одна и та же проводка фигурирует в двух выписках, два счета участвуют, для одного эта сумма проходит по дебету, для другого по кредиту, больше ни в каких выписках эта проводка считаться, естественно, не может. Несколько сумбурно, извиняйте.... И еще раз - Спасибо! Буду рад любым другим мыслям\домыслам\советам\критике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2002, 19:25:49 |
|
||
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
No other suggestions? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 11:03:29 |
|
||
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
After Cat2...? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 11:09:30 |
|
||
|
Помогите чайнику, пожалуйста (+)
|
|||
|---|---|---|---|
|
#18+
Why not? Two professionals - three opinions... Я имел в виду, может, другие подходы есть к таким проблемам. А еще по поводу того, что "не надо так делать" - понятно, не надо... а вот хотелось бы узнать, _как_ надо... ( понимаю, что наглость, но все же...) С уважением ко всем участникам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2002, 12:33:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32038717&tid=1821578]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 293ms |

| 0 / 0 |
