02.03.2006, 17:42 | #1 |
Программер
|
Как работает группировка в запросе?
Запрос с группировкой возвращает неверные данные. Точнее не те что надо В таблице BankAccountTrans есть две записи с одинаковым Voucher and TransDate. В LedgerTrans есть тоже две записи с такими же Voucher and TransDate. По идее у нас должно получиться следующее. Выбраться одна строка из BankAccountTrans и к ней две строки из LedgerTrans. Проблема в том, что суммы в LedgerTrans задваиваются. Почему так?????
Вот запрос: SELECT AccountId, TransDate, SUM(AmountMST) FROM BankAccountTrans GROUP BY BankAccountTrans.AccountId ASC, BankAccountTrans.TransDate ASC WHERE ((TransDate>=01.01.2006 AND TransDate<=31.01.2006)) JOIN TransDate, Dimension[2], DocumentNum, DocumentDate, JournalNum, Txt, Crediting, SUM(AmountCur) FROM LedgerTrans GROUP BY LedgerTrans.TransDate ASC, LedgerTrans.Dimension[2] ASC, LedgerTrans.DocumentNum ASC, LedgerTrans.DocumentDate ASC, LedgerTrans.JournalNum ASC, LedgerTrans.Txt ASC, LedgerTrans.Crediting ASC WHERE BankAccountTrans.TransDate = LedgerTrans.TransDate AND BankAccountTrans.Voucher = LedgerTrans.Voucher AND ((AccountNum LIKE 51*)) AND ((Voucher LIKE ????000075)) AND ((((BankAccountTrans.AmountCur < 0) && (ledgerTrans.AmountCur < 0)) || ((BankAccountTrans.AmountCur >= 0) && (ledgerTrans.AmountCur >= 0)))) Последний раз редактировалось vasiliy; 02.03.2006 в 17:46. |
|
02.03.2006, 17:56 | #2 |
NavAx
|
Видимо потому что в LedgerTrans по две строки на каждую строку BankAccountTrans (про корреспонденцию не забыли)?
Последний раз редактировалось raz; 02.03.2006 в 17:59. |
|
02.03.2006, 18:11 | #3 |
Программер
|
Про корреспонденцию не забыли Все выбирается по одному счету (51*). В корр проводках счет не похож на 51*
|
|