Groeperen en Som

Status
Niet open voor verdere reacties.
HIj gaf een fout bij het sommeren, enkele haakjes stonden verkeerd. Dit heb ik nu aangepast en nu werkt het. Ik houd het topic nog even open, denk dat er nog wat vragen zullen komen. Overigens zie ik nu in de headers somvanverkoopwaarde2008. Ik krijg het niet voor elkaar verkoopwaarde2008 goed te laten draaien met de formules?

Code:
SELECT Debiteurenlijst.Land, Sum([debiteurenlijst].[Verkoopwaarde])+Sum([verkoopwaarde 2009_1]) AS [Verkoopwaarde 2009], Sum([debiteurenlijst].[verkoopwaarde]-[debiteurenlijst].[marge in geld])+Sum([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], Sum([Statistieken per Klant 2008].[Verkoopwaarde 2008]) AS [SomVanVerkoopwaarde 2008], Sum([Statistieken per Klant 2008].[Marge in geld 2008]) AS [SomVanMarge in geld 2008], Sum([Verkoopwaarde 2008]-[marge in geld 2008]) AS [Inkoopwaarde 2008], [Inkoopwaarde 2008]/[SomVanVerkoopwaarde 2008] AS [Marge in % 2008], ([Verkoopwaarde 2009]-[SomVanVerkoopwaarde 2008])/[SomVanVerkoopwaarde 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
WHERE (((Debiteurenlijst.Debiteur) Not In ("004289","003515","089982","096666","089438")))
GROUP BY Debiteurenlijst.Land;
 
Je hebt de header zelf ingesteld:

Sum([Statistieken per Klant 2008].[Verkoopwaarde 2008]) AS [SomVanVerkoopwaarde 2008]

Een nieuwe veldnaam(omschrijving) mag niet hetzelfde zijn als een bestaande veldnaam, dus daar moet je een beetje mee schipperen. Als je een veldnaam in een tussenquery gebruikt, kun je hem daar anders noemen, dan is de naam in de daaropvolgende query weer te gebruiken.
 
Ik heb nu het volgende probleem

Code:
SELECT Artikelen.Artikelverkort, Artikelen.Omschrijving, Sum(Artikelen.Aantal) AS Aantal, Sum([artikelen].[Verkoopwaarde EUR])+Sum([statistieken artikel/klant 2009].[verkoopwaarde]) AS [Verkoopwaarde EUR], Sum([artikelen].[Inkoopwaarde EUR])+Sum([statistieken artikel/klant 2009].[verkoopwaarde]-[statistieken artikel/klant 2009].[marge in geld]) AS [Inkoopwaarde EUR], IIf([verkoopwaarde EUR]-[inkoopwaarde eur]=0,0,([verkoopwaarde EUR]-[inkoopwaarde eur])) AS [Marge in geld], IIf([marge in geld]=0,0,([marge in geld]/[verkoopwaarde eur])) AS Marge, Sum([Statistieken artikel/klant 2008].Verkoopwaarde) AS [Verkoopwaarde 2008], Sum(([statistieken artikel/klant 2008].[verkoopwaarde]-([statistieken artikel/klant 2008].[marge in geld]))) AS [Inkoopwaarde 2008], Sum([Statistieken artikel/klant 2008].[Marge in Geld]) AS [Marge in Geld 2008], IIf([marge in geld 2008]=0,0,([marge in geld 2008]/[verkoopwaarde 2008])) AS [Marge 2008], IIf([verkoopwaarde 2008]=0,0,(([Verkoopwaarde EUR]-[verkoopwaarde 2008])/[verkoopwaarde 2008])) AS [Verkoopwaarde 2009 tov 2008]
FROM (Artikelen LEFT JOIN [Statistieken artikel/klant 2008] ON Artikelen.Artikelverkort = [Statistieken artikel/klant 2008].Artikelnummer) LEFT JOIN [Statistieken artikel/klant 2009] ON Artikelen.Artikelverkort = [Statistieken artikel/klant 2009].Artikelnummer
GROUP BY Artikelen.Artikelverkort, Artikelen.Omschrijving
HAVING (((Sum([artikelen].[Verkoopwaarde EUR])+Sum([statistieken artikel/klant 2009].[verkoopwaarde]))>0));

Artikelen is zoals te zien gejoined met 2 andere tabellen.
Nu komt alleen een artikel soms 7 keer voor in de tabel artikelen en kan hij zoiezo maar 1 keer voorkomen in Statistieken artikel/klant 2008 of Statistieken artikel/klant 2009.

Wanneer hij 7x voorkomt wordt echter het geval in bijvoorbeeld Statistieken artikel/klant 2008 met 7 gesommeerd. Hoe kan ik dit oplossen?
 
Bij Groeperen/Totalen worden de gegevens weliswaar gegroepeerd, en dus minder vaak weergegeven; je krijgt nog wel elke unieke combinatie van gegevens te zien. Je zult je query dus moeten vereenvoudigen.
Wat je misschien zou kunnen doen is het volgende: maak voor de totalen een aparte query, waarbij één veld, met één totaal wordt berekend.
Haal deze queries in de overzichtsquery, en verbind ze niet met de andere tabellen. Nu kun je de velden uit de totaalqueries op de normale manier opnemen in de query. Het resultaat zal zijn, dat voor elk record hetzelfde totaal zal worden getoond. Je kunt het eens uitproberen, misschien heb je hier wat an...
 
Okee duidelijk. Ik had die oplossing zelf ook al, maar dacht dat het misschien gemakkelijker kon.

Zit weer met een zelfde soort probleem (blijft lastig)

Code:
SELECT [BCL Query HULP].[Shipment Type], [BCL Query HULP].[Samenvoeging], [BCL Query HULP].[Container Size], [BCL Query HULP].[Port of Loading], Sum([BCL Query HULP].[Werkelijke Transport Kosten EUR]) AS [Werkelijke Transport Kosten EUR], Sum([BCL Query HULP].[Verwachte Kosten Container USD]) AS [Verwachte Kosten Container USD], Sum([BCL Query HULP].[VERW SUEZ_surcharge]) AS SUEZ_surcharge, Sum([BCL Query HULP].[VERW BAF_surcharge]) AS BAF_surcharge, Sum([BCL Query HULP].[VERW CAF_surcharge]) AS CAF_surcharge, Sum([BCL Query HULP].[VERW THC_EUR]) AS THC_EUR, Sum([BCL Query HULP].[VERW ISPS_EUR]) AS ISPS_EUR, Sum([BCL Query HULP].[VERW Laat_Volgen]) AS Laat_Volgen, Sum([BCL Query HULP].[VERW Scankosten]) AS Scankosten, Sum([BCL Query HULP].[VERW Delta Toeslag]) AS [Delta Toeslag], Sum([BCL Query HULP].[VERW Na Transport]) AS [Na Transport], Sum([BCL Query HULP].[VERW Diesel toeslag]) AS [Diesel toeslag], Sum([BCL Query HULP].[Verwachte kosten USD]) AS [Verwachte kosten USD], Sum([BCL Query HULP].[Verwachte kosten EUR]) AS [Verwachte kosten EUR], Count([BCL Query HULP].[Samenvoeging]) AS [Aantal Shipments], IIf([aantal shipments]=1,[bcl].[inklaren eur],([bcl].[inklaren eur]+([bcl].[inklaren eur extra]*([aantal shipments]-1)))) AS Expr1
FROM [BCL Query HULP] LEFT JOIN BCL ON ([BCL Query HULP].[Container Size]=[BCL].[Container Size]) AND ([BCL Query HULP].[Port of Loading]=[BCL].[POL])
GROUP BY [BCL Query HULP].[Shipment Type], [BCL Query HULP].[Samenvoeging], [BCL Query HULP].[Container Size], [BCL Query HULP].[Port of Loading];

Het IF statement zorgt voor de fout.
 
Ik zie er niet zoveel bijzonders aan. Het gaat om dit stukje, neem ik aan?

IIf([aantal shipments]=1,[bcl].[inklaren eur],[bcl].[inklaren eur]+([bcl].[inklaren eur extra]*([aantal shipments]-1))) AS Expr1

Zitten er velden in de formule die leeg of null kunnen zijn?
 
Nee dat kan niet. Kom zelf ook niet achter het probleem.
 
Bovenstaande nog niet opgelost, maar heb tevens een nieuw probleem. Ik heb 3 tabellen. Nu heb ik mij gericht op 2 tabellen die ik op wil tellen. "Omzet artikel totaal (hulp)" en "statistieken artikel klant 2009". Wanneer een waarde in omzet artikel voorkomt, maar niet in statistieken artikel klant 2009 wordt er geen waarde weergegeven. Hoe kan ik dit oplossen?

Code:
SELECT [Omzet Artikel Totaal (HULP)].Artikelverkort, [Omzet Artikel Totaal (HULP)].Omschrijving, Sum([omzet artikel totaal (hulp)].[Verkoopwaarde 2009])+Sum([statistieken artikel/klant 2009].[verkoopwaarde]) AS [Verkoopwaarde EUR], Sum([omzet artikel totaal (hulp)].[Inkoopwaarde 2009])+Sum([statistieken artikel/klant 2009].[verkoopwaarde]-[statistieken artikel/klant 2009].[marge in geld]) AS [Inkoopwaarde EUR], IIf([verkoopwaarde EUR]-[inkoopwaarde eur]=0,0,([verkoopwaarde EUR]-[inkoopwaarde eur])) AS [Marge in geld], IIf([marge in geld]=0,0,([marge in geld]/[verkoopwaarde eur])) AS Marge, Sum([Statistieken artikel/klant 2008].Verkoopwaarde) AS [Verkoopwaarde 2008], Sum(([statistieken artikel/klant 2008].[verkoopwaarde]-([statistieken artikel/klant 2008].[marge in geld]))) AS [Inkoopwaarde 2008], Sum([Statistieken artikel/klant 2008].[Marge in Geld]) AS [Marge in Geld 2008], IIf([marge in geld 2008]=0,0,([marge in geld 2008]/[verkoopwaarde 2008])) AS [Marge 2008], IIf([verkoopwaarde 2008]=0,0,(([Verkoopwaarde EUR]-[verkoopwaarde 2008])/[verkoopwaarde 2008])) AS [Verkoopwaarde 2009 tov 2008]
FROM ([Omzet Artikel Totaal (HULP)] LEFT JOIN [Statistieken artikel/klant 2008] ON [Omzet Artikel Totaal (HULP)].Artikelverkort = [Statistieken artikel/klant 2008].Artikelnummer) LEFT JOIN [Statistieken artikel/klant 2009] ON [Omzet Artikel Totaal (HULP)].Artikelverkort = [Statistieken artikel/klant 2009].Artikelnummer
GROUP BY [Omzet Artikel Totaal (HULP)].Artikelverkort, [Omzet Artikel Totaal (HULP)].Omschrijving;
 
Kun je een db posten waarin we zelf kunnen stoeien? De query is dermate gecompliceerd, dat ik graag met wat getallen wil kunnen stoeien.
 
Was weer veel te mooi weer om achter de pc te zitten :cool:
Maar ik kijk er nu even naar!
 
Deze maakt van een Null-waarde het getal 0, zodat je er wel mee kunt rekenen.

SELECT [Omzet Artikel Totaal (HULP)].Artikelverkort, [Omzet Artikel Totaal (HULP)].Omschrijving, nz(Sum([omzet artikel totaal (hulp)].[Verkoopwaarde 2009]),0)+nz(Sum([statistieken artikel/klant 2009].[verkoopwaarde]),0) AS [Verkoopwaarde EUR], nz(Sum([omzet artikel totaal (hulp)].[Inkoopwaarde 2009]),0)+nz(Sum([statistieken artikel/klant 2009].[verkoopwaarde]-[statistieken artikel/klant 2009].[marge in geld]),0) AS [Inkoopwaarde EUR], IIf([verkoopwaarde EUR]-[inkoopwaarde eur]=0,0,([verkoopwaarde EUR]-[inkoopwaarde eur])) AS [Marge in geld], IIf([marge in geld]=0,0,([marge in geld]/[verkoopwaarde eur])) AS Marge, nz(Sum([Statistieken artikel/klant 2008].[Verkoopwaarde]),0) AS [Verkoopwaarde 2008], nz(Sum(([statistieken artikel/klant 2008].[verkoopwaarde]-([statistieken artikel/klant 2008].[marge in geld]))),0) AS [Inkoopwaarde 2008], nz(Sum([Statistieken artikel/klant 2008].[Marge in Geld]),0) AS [Marge in Geld 2008], IIf([marge in geld 2008]=0,0,([marge in geld 2008]/[verkoopwaarde 2008])) AS [Marge 2008], IIf([verkoopwaarde 2008]=0,0,(([Verkoopwaarde EUR]-[verkoopwaarde 2008])/[verkoopwaarde 2008])) AS [Verkoopwaarde 2009 tov 2008]
FROM ([Omzet Artikel Totaal (HULP)] LEFT JOIN [Statistieken artikel/klant 2008] ON [Omzet Artikel Totaal (HULP)].Artikelverkort = [Statistieken artikel/klant 2008].Artikelnummer) LEFT JOIN [Statistieken artikel/klant 2009] ON [Omzet Artikel Totaal (HULP)].Artikelverkort = [Statistieken artikel/klant 2009].Artikelnummer
GROUP BY [Omzet Artikel Totaal (HULP)].Artikelverkort, [Omzet Artikel Totaal (HULP)].Omschrijving;
 
Bovenstaande oplossing werkte bedankt. Heb nu het volgende probleem:

Volgende code werkt nog:
Code:
Inklaren: IIf([somvanaantal container]<=1;Som([inklaren eur]);Som([inklaren eur]))

Als ik hem uitbreid werkt hij niet.

Code:
Inklaren: IIf([somvanaantal container]<=1;Som([inklaren eur]);Som([inklaren eur]+[inklaren eur extra]*([somvanaantal container]-1))))

Wat doe ik verkeerd?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan