Member 14588284 Ответов: 2

Используйте sum и partıtıon в запросе acces


привет,
Я не могу использовать эти коды в майском запросе доступа
я могу использовать его oracle query но он не работает в access query

SUM(SalePrice) OVER(PARTITION BY OrderCategory order BY orderDate)


у меня есть таблица lıke this, и я хочу, чтобы сумма последнего столбца(saleprice)lıke ,
OrderCategory orderDate SalePrice сумма(saleprice)
xxxx 01.01.2020 50 50
xxxx 10.02.2020 150 200
xxxx 01.03.2020 175 375

Что я уже пробовал:

<pre>SUM(SalePrice) OVER(PARTITION BY OrderCategory order BY orderDate)

Richard MacCutchan

Что вы имеете в виду под этим "Я не могу использовать эти коды в майском запросе доступа"?

OriginalGriff

"Это не работает", вероятно, самый бесполезный отчет о проблеме, который мы получаем - и мы получаем его много. Она ничего не говорит нам о том, что происходит или когда это происходит.
Итак, расскажите нам, что он делает, чего вы не ожидали, или не делает, что вы сделали.
Расскажите нам, что вы сделали, чтобы это произошло.
Сообщайте нам о любых сообщениях об ошибках.
Используйте виджет "улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

Member 14588284

https://yadi.sk/d/JrEWUe9Jd8U-dQ
сообщить об ошибке этой

OriginalGriff

Я не собираюсь подходить к случайному сайту, чтобы узнать, что вы там разместили.
Вы хотите показать нам ошибку? Копировать-Н-'paste, а затем разместить текст здесь.

Member 14588284

Ошибка времени выполнения '-2147217900 (80040e14)';

OriginalGriff

Ладно, и что? Что говорит Google об этом числе? Вы проверяли?

Member 14588284

конечно
я не нахожу, что ayntihng потом напишу здесь

OriginalGriff

О, это меня удивляет, потому что для меня Google возвращает 3550 просмотров за 0,36 секунды:

https://www.google.com/search-что?q=run-time+error+%27-2147217900+(80040e14)%27&oq=run-time+error+%27-2147217900+(80040e14)%27&aqs=chrome..69i57.141424j0j7&sourceid=chrome&ie=UTF-8

Большинство из которых, как представляется, содержат решения ...

Member 14588284

я смотрю на них но ничего не вижу ответ на мой вопрос
ты читал мой вопрос?

просто говорю я ,
мне нужна выписка по текущему счету

Member 14588284

OrderCategory orderDate SalePrice sum(saleprice)
xxxx 01.01.2020 50 50
xxxx 10.02.2020 150 200
xxxx 01.03.2020 175 375

2 Ответов

Рейтинг:
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

вот вам пример работы

Maciej Los

5ed!

Member 14588284

?

Maciej Los

Пожалуйста, покрасьте это: Код рейтинг проекта и репутация часто задаваемые вопросы[^]

Я проголосовал 5 за ответ Ричарда из-за ценного контента ;)

Кстати: пожалуйста, посмотрите мой ответ.