Groeperen en Som

Status
Niet open voor verdere reacties.

marka

Gebruiker
Lid geworden
14 jul 2009
Berichten
333
Hallo,

Ik heb de volgende query.

Code:
SELECT Orders.Verkoopbedrag, Orders.[IM-code]
FROM Orders
WHERE (((Orders.Machinenummer)="H1" Or (Orders.Machinenummer)="ETS" Or (Orders.Machinenummer)="R2" Or (Orders.Machinenummer)="R3" Or (Orders.Machinenummer)="R6" Or (Orders.Machinenummer)="VR5" Or (Orders.Machinenummer)="VR8" Or (Orders.Machinenummer)="TP1" Or (Orders.Machinenummer)="TP1Z" Or (Orders.Machinenummer)="TC3" Or (Orders.Machinenummer)="TC2" Or (Orders.Machinenummer)="TC4" Or (Orders.Machinenummer)="TP12" Or (Orders.Machinenummer)="V2" Or (Orders.Machinenummer)="V3" Or (Orders.Machinenummer)="V6" Or (Orders.Machinenummer)="V9" Or (Orders.Machinenummer)="VR4"));

Nu is het de bedoeling dat hij per im-code (Dit zijn verkopers) de unieke waarde geeft en het gesommeerde verkoopbedrag. DIt lukt me wel met nog een query erbij, maar ik zou het graag in 1 query doen.
 
Bedoel je deze query?:

Code:
SELECT Sum(Orders.Verkoopbedrag) AS SomVanVerkoopbedrag, Orders.[IM-code]
FROM Orders
GROUP BY Orders.[IM-code], Orders.Machinenummer
HAVING (((Orders.Machinenummer)="H1" Or (Orders.Machinenummer)="ETS" Or (Orders.Machinenummer)="R2" Or (Orders.Machinenummer)="R3" Or (Orders.Machinenummer)="R6" Or (Orders.Machinenummer)="VR5" Or (Orders.Machinenummer)="VR8" Or (Orders.Machinenummer)="TP1" Or (Orders.Machinenummer)="TP1Z" Or (Orders.Machinenummer)="TC3" Or (Orders.Machinenummer)="TC2" Or (Orders.Machinenummer)="TC4" Or (Orders.Machinenummer)="TP12" Or (Orders.Machinenummer)="V2" Or (Orders.Machinenummer)="V3" Or (Orders.Machinenummer)="V6" Or (Orders.Machinenummer)="V9" Or (Orders.Machinenummer)="VR4"));

Er zit ook een group by op machinenummer (als nr afwijkt dan nieuwe regel).
Je kunt deze ook op "Waar" zetten in ontwerpweergave dan zal access in de query machinenr groeperen.
 
Nee deze had ik al.

Dan geeft hij voor een verkoper wanneer deze op 3 machinenummers heeft verkocht 3x een bedrag. Deze 3 bedragen moeten als 1 komen te staan.
 
Uhm lees mn laatste zin nog es...

Als je Machinenr op Waar zet (dus niet group by) krijg je:

Code:
SELECT Sum(Orders.Verkoopbedrag) AS SomVanVerkoopbedrag, Orders.[IM-code]
FROM Orders
WHERE (((Orders.Machinenummer)="H1" Or (Orders.Machinenummer)="ETS" Or (Orders.Machinenummer)="R2" Or (Orders.Machinenummer)="R3" Or (Orders.Machinenummer)="R6" Or (Orders.Machinenummer)="VR5" Or (Orders.Machinenummer)="VR8" Or (Orders.Machinenummer)="TP1" Or (Orders.Machinenummer)="TP1Z" Or (Orders.Machinenummer)="TC3" Or (Orders.Machinenummer)="TC2" Or (Orders.Machinenummer)="TC4" Or (Orders.Machinenummer)="TP12" Or (Orders.Machinenummer)="V2" Or (Orders.Machinenummer)="V3" Or (Orders.Machinenummer)="V6" Or (Orders.Machinenummer)="V9" Or (Orders.Machinenummer)="VR4"))
GROUP BY Orders.[IM-code];

Je hebt nu 1 regel voor 1 verkoper voor meerdere machines. ;)
Ik hoop dat deze werkt.
 
Laatst bewerkt:
Ik lees ook net dat ik er heb staan "query machinenr groeperen."
Kortom ik had het ook een beetje verkeerd verwoord: het is eerder niet groeperen...
Ben een beetje te snel door de bocht soms...

Als je vraag is opgelost zou je hem dan op opgelost willen zetten: rechts onderin op deze pagina? Thnx!
 
Ik heb een nieuwe (zelfde soort vraag)

Code:
SELECT [Mutaties Helden].Kostenplaats, [Mutaties Helden].Grootboekrek, [Mutaties Helden].[Omschrijving grootboekrek], [Mutaties Helden].Periode, [Mutaties Helden].Bedrag AS [Bedrag Maand], IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp901],([budget directie helden].[901]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp902],([budget directie helden].[902]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp903],([budget directie helden].[903]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp904],([budget directie helden].[904]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp905],([budget directie helden].[905]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp906],([budget directie helden].[906]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp907],([budget directie helden].[907]),0))))))) AS [Budget maand1], IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp908],([budget directie helden].[908]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp909],([budget directie helden].[909]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp910],([budget directie helden].[910]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp911],([budget directie helden].[911]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp912],([budget directie helden].[912]),0))))) AS [Budget maand2], [budget maand1]+[budget maand2] AS [Budget Maand], IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp901],([budget directie helden].[901 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp902],([budget directie helden].[902 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp903],([budget directie helden].[903 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp904],([budget directie helden].[904 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp905],([budget directie helden].[905 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp906],([budget directie helden].[906 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp907],([budget directie helden].[907 cumulatief]),0))))))) AS [Budget cumulatief1], IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp908],([budget directie helden].[908 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp909],([budget directie helden].[909 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp910],([budget directie helden].[910 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp911],([budget directie helden].[911 cumulatief]),IIf([Periode].[Periode]=[Budget Directie Helden].[Hulp912],([budget directie helden].[912 cumulatief]),0))))) AS [Budget cumulatief2], [budget cumulatief1]+[budget cumulatief2] AS [Budget Cumulatief]
FROM Periode INNER JOIN ([Mutaties Helden] INNER JOIN [Budget Directie Helden] ON [Mutaties Helden].Grootboekrek = [Budget Directie Helden].Grootboekrek) ON Periode.Periode = [Mutaties Helden].Periode
WHERE ((([Mutaties Helden].Kostenplaats)="10"));

Hij zou moeten groeperen op [mutaties helden].groetboekrek.

Ik heb het via hetzelfde trucje geprobeerd als hiervoor, maar dat werkte niet.

Zoals te zien is heb ik verder een join gemaakt tussen de tabel "mutaties Helden" en "Budget directie helden". Nu is het alleen zo dat er een waarde [grootboekrek]kan staan in de tabel [Helden mutaties] die niet voorkomt in [budget directie helden] en andersom. In het totaal overzicht zou het echter wel weergegeven moeten worden mits de waarde in de kolom [bedrag maand], [budget maand] of [budget cumulatief] niet leeg is.
 
Als je gekoppelde waarden hebt in een tabel die niet voorkomen in tabel2, dan zie je die niet in de query, dat klopt. Standaard zie je bij een query alleen overeenkomende waarden terug. Je kunt daar wel wat aan doen:
Als je op de lijn dubbelklikt tussen de twee tabellen, dan zie je dat je 3 opties hebt, waarvan optie 1 standaard geselecteerd is. Met de overige opties geef je aan van welke tabel je alle records wilt zien, en van welke tabel de gerelateerde records. Je kunt straffeloos hiermee stoeien, door de twee andere opties te proberen.
Hierbij zal één van de twee opties waarschijnlijk hetzelfde opleveren als optie 1.
Waarom? Stel dat je in tabel1 50 records hebt. In Tabel2 komen daarvan 42 records overeen. Bij een standaardquery zie je dan 42 records terug, namelijk de 42 die in beide tabellen voorkomen. Door optie 2 te gebruiken, zie je vervolgens 50 records: de 42 records die in beide tabellen voorkomen, + 8 records die wel in tabel1 staan, maar dus niet in tabel2.
Kies je optie 3, dan zie je weer 42 records: de 42 records namelijk die in Tabel1 staan, en die ook in tabel1 voorkomen. Omdat, normaal gesproken, er in tabel2 geen records zitten die niet in tabel1 zitten, blijft het daarbij.

Komt dit in de buurt van een oplossing?

Michel
 
Jazeker het werkt nu naar behoren dank! Nu alleen nog dat groeperen, dus alleen unieke waarden voor [mutaties helden].groetboekrek met bij [bedrag maand] het gesommeerde aantal.
 
Zo zie je maar, ik kan er best even een dagje tussenuit! :cool:

Michel
 
Nieuw zelfde soort probleem

Code:
SELECT Debiteurenlijst.Land, [debiteurenlijst].[Verkoopwaarde]+[verkoopwaarde 2009_1] AS [Verkoopwaarde 2009], (([debiteurenlijst].[verkoopwaarde]-[debiteurenlijst].[marge in geld])+([statistieken per klant 2009].[verkoopwaarde 2009_1]-[statistieken per klant 2009].[marge in geld 2009_1])) AS [Inkoopwaarde 2009], ([verkoopwaarde 2009]-[inkoopwaarde 2009]) AS [Marge in geld], (([Verkoopwaarde 2009]-[inkoopwaarde 2009])/[verkoopwaarde 2009]) AS [Marge in % 2009], [Statistieken per Klant 2008].[Verkoopwaarde 2008], [Statistieken per Klant 2008].[Marge in geld 2008], [Verkoopwaarde 2008]-[marge in geld 2008] AS [Inkoopwaarde 2008], [inkoopwaarde 2008]/[verkoopwaarde 2008] AS [Marge in % 2008], ([verkoopwaarde 2009]-[verkoopwaarde 2008])/[verkoopwaarde 2008] AS [Verkoopwaarde 2009 tov 2008]
FROM (Debiteurenlijst LEFT JOIN [Statistieken per Klant 2008] ON Debiteurenlijst.Debiteur = [Statistieken per Klant 2008].Klant) LEFT JOIN [Statistieken per klant 2009] ON Debiteurenlijst.Debiteur = [Statistieken per klant 2009].Klant
GROUP BY Debiteurenlijst.Land, [debiteurenlijst].[Verkoopwaarde]+[verkoopwaarde 2009_1], (([debiteurenlijst].[verkoopwaarde]-[debiteurenlijst].[marge in geld])+([statistieken per klant 2009].[verkoopwaarde 2009_1]-[statistieken per klant 2009].[marge in geld 2009_1])), [Statistieken per Klant 2008].[Verkoopwaarde 2008], [Statistieken per Klant 2008].[Marge in geld 2008]
HAVING ((([debiteurenlijst].[Verkoopwaarde]+[verkoopwaarde 2009_1])>0));

Hij wil niet groeperen op land.Hoe kan ik dit opvangen?
 
Zou je een voorbeeld willen uploaden?
Dit werkt wat makkelijker.

In het voorbeeld alleen benodigde tabellen, deze query en geen gevoelige gegevens.

Er staat ook GROUP BY Debiteurenlijst.Land in je query.
 
De group by debiteurenlijst is enkel een voorwaarde, deze wordt ook niet weergegeven.
Alle gegevens weggegooid, maar hij blijft 50mb dat is vreemd probeer nog even verder.
 
Toevallig al tijd gehad om er naar te kijken?
Het bestand zou ik het liefst vandaag afhebben en dit is nog het enige probleem!
 
Met wat uitvoer is het al wat duidelijker.
De functie werkt zoals je het hebt aangegevent....
Je hebt namelijk meerdere velden op GROUP BY gezet.
Kortom op al die velden gaat de query groeperen.

Ik gebruik hier Duitsland ook als voorbeeld, deze heeft 3 rijen.
Ik neem aan dat je wilt dat Dld 1 keer voorkomt?

Je hebt een Group By staan op de volgende velden:
-Verkoopwaarde 2009:
(3 verschillende waarden dus 3 rijen)
1023,23 & 1027,94 & 1229,85
Kortom wat moet dit worden? Som?

-Inkoopwaarde 2009:
(3 verschillende waarden dus 3 rijen)
523,23 & 677,94 & 1029,85
Kortom wat moet dit worden? Som?

Hetzelfde geldt voor:
- Verkoopwaarde 2008
- Marge in geld 2008
- Debiteur (deze kan op Waar -> Where)

Ik heb een voorbeeld bijgevoegd, hier mag je verder mee spelen.
Let wel, dit heb ik echt snel in elkaar gezet. Wel even goed testen en bekijken.
Ik heb nu namelijk geen tijd meer tot vanavond.
Als er problemen/fouten zijn dan hoor ik het wel.

In het vervolg zou ik de database ook even comprimeren & herstellen in Access.
Dan past het makkelijk in de bijlage
 

Bijlagen

Dank je ik ga hier even naar kijken. Ik kan hier op mijn werk niet zippen, vandaar de omslachtige methode!
 
Hij werkt nu, erg druk gehad dus nog niet eerder naar gekeken. Moet nog even kijken of hij alle waarden goed sommeerd, maar ik zie de waarden in ieder geval per land.

Dank tot nu toe!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan