powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос
3 сообщений из 3, страница 1 из 1
Запрос
    #34856705
Главбух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая ситуация:
Есть 2 запроса.
Наборы: №1 отражает существующее состояние проводок. №2 формируется исходя из исходных данных.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 1 . Select make_acc(crs_inbase.ACC_DB,crs_inbase.DB_A1,crs_inbase.DB_A2,crs_inbase.DB_A3,crs_inbase.DB_A4,crs_inbase.DB_A4) As db,;
make_acc(crs_inbase.ACC_KR,crs_inbase.KR_A1,crs_inbase.KR_A2,crs_inbase.KR_A3,crs_inbase.KR_A4,crs_inbase.KR_A5) As kr,;
        crs_inbase.RN,;
        crs_inbase.summ_amort;
        from crs_inbase  Into Cursor crs_res_am


 2 . Select  crs_epsc.RN,;
make_acc(crs_epsc.ACC_DB,crs_epsc.DB_A1,crs_epsc.DB_A2,crs_epsc.DB_A3,crs_epsc.DB_A4,crs_epsc.DB_A4) As db,;
make_acc(crs_epsc.ACC_KR,crs_epsc.KR_A1,crs_epsc.KR_A2,crs_epsc.KR_A3,crs_epsc.KR_A4,crs_epsc.KR_A5) As kr,;
        crs_epsc.sum_base;
        from crs_acc_eop2 crs_epsc Into Cursor crs_real_amort

Результирующий:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Select crs_real_amort.RN,;
            crs_real_amort.db,;
            crs_real_amort.kr,;
            Nvl(crs_real_amort.sum_base, 0 . 00 ) as sum_base,;
            Nvl(crs_rec_amort.summ_amort, 0 . 00 ) as summ_amort,;
            Abs(Nvl(crs_real_amort.sum_base, 0 . 00 ) - Nvl(crs_rec_amort.summ_amort, 0 . 00 )) As delta;
            from crs_real_amort;
            full join  crs_rec_amort on crs_real_amort.db =  crs_rec_amort.db And crs_real_amort.kr = crs_rec_amort.kr;
            into Table ( lcPath )

full join необходим, так как необходимо учитывать левые. Левые – это те которые могут существовать в 1 запросе и не существовать во втором и наоборот. Вообщем несовпадение по суммам и счетам может быть если бухгалтера что-то накосячили. И все бы хорошо, если в первом запросе не возникла ситуация когда записи могут дублиться, троиться и т.д.. (что в принципе неправильно и нужно было суммы докладывать в проводку а не проводить их отдельной такой же).

Вопрос:
1) Каким образом организовать результирующий запрос, который учитывал бы, что в источнике №1 существуют дубли по счетам ну и допустим в еще 1 поле результирующего запроса ставил признак всем дублям кроме 1 например .T. или .F.
2) В случае отсутствия хотя бы 1 связи источников 1 и 2 по счетам ставил признак .T. или .F. всем дублям.

На процедурном языке не нужно, это я сам знаю как. Хочется запросом(ами).
...
Рейтинг: 0 / 0
Запрос
    #34856818
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ф-ия make_acc должна выдавать не просто проводки, а сумму (sum()) по проводкам сгруппированные по документу (ну или что у Вас является условием признаком документа, тогда надо ещё в make_acc передавать условие группировки) , тогда первый и второй запросы будут иметь DISTINCT строки
...
Рейтинг: 0 / 0
Запрос
    #34856840
Главбух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist, вот как раз-то мне и не нужен DISTINCT. Мне нужно все полное объединение с указанием
того, что в исходных проводках (источник 1) существуют дубли и если они связаны с проводками из 2 источника то всем проставить признак дубля, кроме 1 ( ее нужно оставить), а если нет таких связей то выставить всем признак. Вот так вообщем.
make_acc - просто формирует счет с уровнями аналитики и все. И источники болжны быть связаны именно по счетам что вы и наблюдаете. С суммами у меня проблем нет. Все уже посчитано.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]