Wpis z mikrobloga

#bazydanych #access #informatyka

Mirki, zadanie jest takie: Wykonaj zestawienie finansowe zawierające miesięczne informacje o wartości sprzedaży
oleju opałowego w okresie od 01 sierpnia 2013 roku do 31 stycznia 2014 roku. Zestawienie
powinno zawierać rok, miesiąc i wartość sprzedaży. Dane uporządkuj chronologicznie.

Tak to wygląda u mnie:
http://pics.tinypic.pl/i/00725/92x7be17nfl4.png
http://pics.tinypic.pl/i/00725/9wl3xdvsyob3.png

Zestawienie się tworzy, ale podaje dzienną wartość sprzedaży, a chodzi o miesięczną. Gdzie muszę dać sumę albo jak inaczej to zrobić żeby pokazało mi zsumowaną wartość z całego miesiąca?
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Supaplex: To już jest. Widok SQLa:

SELECT Year([Transakcje]![data_transakcji]) AS Rok, Month([Transakcje]![data_transakcji]) AS Miesiąc, Sum([Transakcje]![ilosc]*[Asortyment]![cena_jenostkowa]) AS Wartość
FROM Dane_osobowe INNER JOIN (Asortyment INNER JOIN Transakcje ON Asortyment.id_asortymentu = Transakcje.id_asortymentu) ON Dane_osobowe.id_klienta = Transakcje.id_klienta
GROUP BY Transakcje.data_transakcji, Year([Transakcje]![data_transakcji]), Month([Transakcje]![data_transakcji]), Asortyment.id_asortymentu
HAVING (((Transakcje.data_transakcji) Between #8/1/2013# And #1/31/2014#) AND ((Asortyment.id_asortymentu)="OO"))
ORDER BY Transakcje.data_transakcji;
  • Odpowiedz
@Optimum: Zmień:

GROUP BY Transakcje.data_transakcji, Year([Transakcje]![data_transakcji]), Month([Transakcje]![data_transakcji]), Asortyment.id_asortymentu
na to:

GROUP BY Year([Transakcje]![data_transakcji]), Month([Transakcje]![data_transakcji]), Asortyment.id_asortymentu**tekst pogrubiony**
A zamiast having użyj WHERE
  • Odpowiedz
@Supaplex: Wywala się przy zmianie na WHERE, działa jeśli jest HAVING ale wciąż pokazuje zestawienie z dnia, a nie z miesiąca. Po wywaleniu całej linijki HAVING też pokazuje dzienne zestawienie.
  • Odpowiedz
@Optimum: Czekaj, tam jeszcze jest Asortyment.id_asortymentu
Wywal ten asortyment z group by. Przecież nie potrzebujesz wiedzieć z dokąldnością do asortymentu jaka sprzedaży była.
  • Odpowiedz
@Optimum:

SELECT Year([Transakcje]![data_transakcji]) AS Rok, Month([Transakcje]![data_transakcji]) AS Miesiąc, Sum([Transakcje]![ilosc]*[Asortyment]![cena_jenostkowa]) AS Wartość
FROM Dane_osobowe INNER JOIN (Asortyment INNER JOIN Transakcje ON Asortyment.id_asortymentu = Transakcje.id_asortymentu) ON Dane_osobowe.id_klienta = Transakcje.id_klienta
GROUP BY Transakcje.data_transakcji, Year([Transakcje]![data_transakcji]), Month([Transakcje]![data_transakcji])
HAVING (((Transakcje.data_transakcji) Between #8/1/2013# And #1/31/2014#) AND ((Asortyment.id_asortymentu)="OO"))
ORDER BY Transakcje.data_transakcji;
  • Odpowiedz
@Optimum:
Spróbuj tak, pod warunkiem iż nawiasów nie zjadłem i są prawidłowe:

SELECT Year([Transakcje]![data_transakcji]) AS Rok, Month([Transakcje]![data_transakcji]) AS Miesiąc, Sum([Transakcje]![ilosc]*[Asortyment]![cena_jenostkowa]) AS Wartość
FROM Dane_osobowe
INNER JOIN (Asortyment INNER JOIN Transakcje ON Asortyment.id_asortymentu = Transakcje.id_asortymentu) ON Dane_osobowe.id_klienta
  • Odpowiedz