Рейтинг:
1
Maciej Los
Ну, вам нужно изменить только одно значение, чтобы получить правильный результат:
CARKOD ISLTARIH TARIH KAYITNO BORC ALACAC BAKYIE
12001001 2020-03-21 15:41:19 2020-03-01 3 500 500
12001001 2020-03-21 16:09:16 2020-03-05 4 600 1700
12001001 2020-03-21 16:09:16 2020-03-03 8 600 1700
12001001 2020-03-21 22:20:51 2020-03-20 5 -500 1200
12001001 2020-03-21 23:03:44 2020-03-30 6 -500 700
12001001 2020-03-21 23:03:45 2020-03-30 7 -500 200
В исходном файле подчеркнутая величина равна:
2020-03-21 23:03:44
, так
SUM(TUTAR)
за финансовую операцию, совершенную в ту же секунду-1000! Вот почему вы получили значение 200 вместо 700.
Вот запрос, используемый мной:
SELECT src.CARKOD, src.ISLTARIH, src.TARIH, src.KAYITNO, IIF(src.BA='B', src.TUTAR, NULL) AS BORC, IIF(src.BA='A', src.TUTAR*-1, NULL) AS ALACAC, (SELECT SUM(IIF(ps.BA='B', ps.TUTAR, ps.TUTAR *-1))
FROM CARTH001 AS ps
WHERE ps.ISLTARIH <= src.ISLTARIH) AS BAKYIE
FROM CARTH001 AS src
ORDER BY src.ISLTARIH, src.KAYITNO;
[РЕДАКТИРОВАТЬ]
Соответственно с комментариями к этому ответу...
Запрос должен выглядеть следующим образом:
SELECT src.CARKOD, src.ISLTARIH, src.TARIH, src.KAYITNO, IIF(src.BA='B', src.TUTAR, NULL) AS BORC, IIF(src.BA='A', src.TUTAR*-1, NULL) AS ALACAC
FROM CARTH001 AS src
ORDER BY src.TARIH, src.ISLTARIH;
Все остальное должно быть сделано в MS Excel, потому что MS Access не поддерживает
ROW_NUMBER(PARTITION BY ... ORDER BY ...)
Хотя этого можно добиться несколькими подзапросами, но окончательное решение является - по меньшей мере - некрасивым...
Я создал файл MS Excel, который получает данные из базы данных Access и на их основе "вычисляет" ожидающую сумму.
Excel - ожидающая сумма по данным доступа[
^]
Файл доступен для загрузки между 07:00 утра и 10:59.59 вечера UTC+1 (Варшава)
Результат:
CARKOD ISLTARIH TARIH KAYITNO BORC ALACAC BAKYIE
12001001 2020-03-11 2020-03-01 3,00 500,00 500
12001002 2020-03-15 2020-03-01 1,00 -500 0
12001001 2020-03-10 2020-03-03 8,00 600,00 600
12001001 2020-03-12 2020-03-05 4,00 600,00 1200
12001001 2020-03-22 2020-03-05 13,00 -400 800
12001001 2020-03-20 2020-03-15 12,00 300,00 1100
12001001 2020-03-13 2020-03-20 5,00 -500 600
12001001 2020-03-18 2020-03-20 10,00 750,00 1350
12001001 2020-03-19 2020-03-20 11,00 30,00 1380
12001001 2020-03-14 2020-03-30 7,00 -500 880
12001001 2020-03-16 2020-03-30 9,00 -500 380
12001001 2020-03-17 2020-03-30 6,00 -500 -120
Member 14588284
Поблагодарить у очень многое Мацей Лос
я сменил эти коды и выполнил свое желание
еще раз большое вам спасибо :)
Maciej Los
Всегда пожалуйста.
Richard MacCutchan
Я думаю, что ваши 5 от меня гораздо более заслуженны.
Maciej Los
- Спасибо, Ричард.
:)
Member 14588284
Привет еще раз
вы можете посмотреть еще раз коды ?
я изменил порядок по дате и итоги не соответствуют действительности
https://yadi.sk/d/4q_RDVxb2JEqtg
Maciej Los
Вам нужно определить, что не так с запросом, измененным вами...
Почему вы изменили порядок по пунктам?
Я понятия не имею, чего ты хочешь добиться...
Member 14588284
потому что я должен заказать по дате (Тарих)
Maciej Los
И ожидаемый результат есть...
Member 14588284
Ну и что?
Maciej Los
Я спрашивал вас о выводе примера...
Maciej Los
Проверить это:
Скрыть скопировать код
SELECT src.CARKOD, src.ISLTARIH, src.TARIH, src.KAYITNO, IIF(src.BA='B', src.TUTAR, NULL) AS BORC, IIF(src.BA='A', src.TUTAR*-1, NULL) AS ALACAC, ( SELECT SUM(IIF(ps.BA='B', ps.TUTAR, ps.TUTAR *-1)) FROM CARTH001 AS ps WHERE DCount('TARIH', 'CARTH001', 'TARIH<=#' & ps.TARIH & '# AND ISLTARIH<=#' & ps.ISLTARIH & '#') <= DCount('TARIH', 'CARTH001', 'TARIH<=#' & src.TARIH & '# AND ISLTARIH<=#' & src.ISLTARIH & '#') ) AS BAKYIEFROM CARTH001 AS srcORDER BY src.TARIH, src.ISLTARIH;
И вот результат:
CARKOD ISLTARIH TARIH KAYITNO BORC ALACAC BAKYIE
12001001 2020-03-11 15:41:19 2020-03-01 3 500 1100
12001002 2020-03-15 23:03:41 2020-03-01 1 -500 600
12001001 2020-03-10 11:09:16 2020-03-03 8 600 1100
12001001 2020-03-12 16:09:16 2020-03-05 4 600 1200
12001001 2020-03-22 17:01:20 2020-03-05 13 -400 100
12001001 2020-03-20 16:44:01 2020-03-15 12 300 100
12001001 2020-03-13 22:20:51 2020-03-20 5 -500 700
12001001 2020-03-18 16:40:03 2020-03-20 10 750 850
12001001 2020-03-19 16:40:30 2020-03-20 11 30 380
12001001 2020-03-14 23:03:14 2020-03-30 7 -500 100
12001001 2020-03-16 23:03:42 2020-03-30 9 -500 380
12001001 2020-03-17 23:03:47 2020-03-30 6 -500 -120
Member 14588284
но результаты не соответствуют действительности
CARKOD ISLTARIH TARIH KAYITNO BORC ALACAC BAKYIE
12001001 2020-03-11 15:41:19 2020-03-01 3 500 500
12001002 2020-03-15 23:03:41 2020-03-01 1 -500 0
12001001 2020-03-10 11:09:16 2020-03-03 8 600 600
12001001 2020-03-12 16:09:16 2020-03-05 4 600 1200
12001001 2020-03-22 17:01:20 2020-03-05 13 -400 800
12001001 2020-03-20 16:44:01 2020-03-15 12 300 1100
12001001 2020-03-13 22:20:51 2020-03-20 5 -500 400
12001001 2020-03-18 16:40:03 2020-03-20 10 750 1150
12001001 2020-03-19 16:40:30 2020-03-20 11 30 1180
12001001 2020-03-14 23:03:14 2020-03-30 7 -500 600
12001001 2020-03-16 23:03:42 2020-03-30 9 -500 100
12001001 2020-03-17 23:03:47 2020-03-30 6 -500 -600
Member 14588284
Canu пришлите мне файл в пределах этих кодов пожалуйста
я не работал с кодами в своем файле
эрор:
https://yadi.sk/i/_yV7a1UNSBnDwg
Member 14588284
я копирую коды в свой файл но это не сработало для меня #
не могли бы вы прислать мне файл пожалуйста
спасибо
Member 14588284
мой почтовый адрес : [email adrress был удален из-за спам-роботов]
Maciej Los
См. обновленный ответ.
Member 14588284
Спасибо за ваш ответ но я уже пробовал это сделать
когда "КАРКОД" добавляют еще один, то "БАКИЕ" не соответствует действительности
Maciej Los
Загрузите заархивированный файл еще раз.
Вы не уточнили, что КАРКОД важен. Это последний раз, когда я помогаю тебе в этой теме.
Удачи вам!
Member 14588284
Спасибо за все Maciaj Los.
Но я должен сделать это в одном запросе.
КАРКОД,ТАРИХ,БОРК,АЛАЧАК,БАКИЕ
И я не нашел для этого никакого решения
Member 14588284
TOPLAM = "SELECT B.CARKOD,B.TARIH,B.ISLTARIH ,SUM(" & BORC & "- " & ALACAK & ") AS TOPL FROM CARTH001 B GROUP BY B.CARKOD,B.TARIH,B.ISLTARIH ORDER BY B.CARKOD,B.TARIH,B.ISLTARIH ASC "
TOPLAM2 = "SELECT CARKOD,TARIH,ISLTARIH,TOPL FROM (" & TOPLAM & ") "
TOPLAM3 = "SELECT SUM(TOPL) FROM (" & TOPLAM2 & ") WHERE CARKOD=A.CARKOD AND TARIH<=A.TARIH AND ISLTARIH<=B.ISLTARIH "
SORGU = "SELECT A.CARKOD,A.TARIH,A.ISLTARIH,IIF(A.BA='B',A.TUTAR,0)AS BORC ,IIF(A.BA='A',A.TUTAR*-1,0) AS ALACAK,(" & TOPLAM3 & ") AS BAKIYE FROM CARTH001 A order by A.CARKOD,A.TARIH,A.ISLTARIH"
Я написал такой код, но не смог :(((
Рейтинг:
0
Member 14588284
я читал но там для всех строк только сумма строк
но я хочу вот так
А Б в сумме(с)
xxxx 01.01.2020 50 50
xxxx 10.02.2020 150 200
xxxx 01.03.2020 175 375
Member 14588284
но это дает мне идею и я нахожу свое решение
Большое спасибо
Member 14588284
Но это дает мне неверную сумму, когда более одного яда в одну и ту же дату
Richard MacCutchan
Что такое "это"?
Member 14588284
SORGU = "выбрать CARKOD,Тарих,KAYITNO," &амп; BORC &ампер; " как BORC," &амп; ALACAK &ампер; " как ALACAK," усилителя; _
"(Выберите sum(" &амп; BORC &усилитель; "-" &амп; ALACAK &ампер; ") из CARTH001 где Тарих&ЛТ;=А. Тарих и CARKOD=А. CARKOD )как BAKIYE " и усилитель; _
"От CARTH001 A GROUP BY" & ALACAK & "," & BORC & ",CARKOD,TARIH,KAYITNO ORDER BY CARKOD,TARIH,KAYITNO"
Richard MacCutchan
Вам нужно разбить это утверждение на более мелкие части и посмотреть, что каждая из них возвращает. Это для тех, кто здесь, чтобы проверить это невозможно.
Member 14588284
https://yadi.sk/d/4q_RDVxb2JEqtg
вот вам пример работы