Unieke koppeling tussen ReportingBalance en Budgets (Exact)

Ik haal met onderstaande SQL-code Exact tabellen op. Op maanden met actuals krijg ik dubbele regels en daardoor dubbeltellingen op Budget. Aan de rowid’s van ReportingBalance zie ik dat er dubbelingen ontstaan.
Bij deze administratie wordt geen gebruik gemaakt van kostenplaatsen en -dragers (zijn leeg).

Voorbeeld

SELECT 
    COALESCE( 
	[glaccountsbulk].[code],
	[budgets].[glaccountcode],
	[glaccountclassificationmappings].[glaccountcode] ,
	[reportingbalance].[glaccountcode] 
	) AS [Grootboekrek],
    COALESCE( 
	  [glaccountsbulk].[division] ,
	 [budgets].[division] ,
	  [glaccountclassificationmappings].[division] ,
	  [glclassifications.a].[division] ,
	  [glclassifications.b].[division] ,
	  [reportingbalance].[division] 
		) AS Divi,
    COALESCE( 
	  [glaccountsbulk].[divisionname] ,
	  [budgets].[divisionname] 
		) AS Bedrijfsnaam,
    COALESCE( 
	  [budgets].[reportingyear],
	  [reportingbalance].[reportingyear] 
		) AS Jaar,
    COALESCE( 
	 [budgets].[reportingperiod] ,
	 [reportingbalance].[reportingperiod] 
		) AS Maand,

  sum([reportingbalance].[amount]) AS [amount],
  sum([budgets].[amountdc]) AS [amountdc],
  [reportingbalance].[balancetype] AS [balancetype (reportingbalance)],
  [glaccountsbulk].[balancetype] AS [balancetype],
  [budgets].[budgetscenariodescription] AS [budgetscenariodescription],
  [glaccountclassificationmappings].[classification] AS [classification],
  [glaccountclassificationmappings].[classificationcode] AS [classificationcode],
  [glaccountclassificationmappings].[classificationdescription] AS [classificationdescription],
  [glclassifications.b].[code] AS [code (glclassifications) #1],
  [glclassifications.a].[code] AS [code (glclassifications)],
  [glclassifications.b].[description] AS [description (glclassifications) #1],
  [glclassifications.a].[description] AS [description (glclassifications)],
  [glaccountsbulk].[description] AS [description],
  [glaccountclassificationmappings].[glaccount] AS [glaccount (glaccountclassificationmappings)],
  [reportingbalance].[glaccount] AS [glaccount (reportingbalance)],
  [budgets].[glaccount] AS [glaccount],
  [glaccountclassificationmappings].[glaccountdescription] AS [glaccountdescription (glaccountclassificationmappings)],
  [reportingbalance].[glaccountdescription] AS [glaccountdescription (reportingbalance)],
  [budgets].[glaccountdescription] AS [glaccountdescription],
  [glaccountclassificationmappings].[glschemecode] AS [glschemecode],
  [budgets].[rowid$] AS [rowid$ (budgets)],
  [glaccountclassificationmappings].[rowid$] AS [rowid$ (glaccountclassificationmappings)],
  [glclassifications.b].[rowid$] AS [rowid$ (glclassifications) #1],
  [glclassifications.a].[rowid$] AS [rowid$ (glclassifications)],
  [reportingbalance].[rowid$] AS [rowid$ (reportingbalance)],
  [glaccountsbulk].[rowid$] AS [rowid$]

FROM [dbo].[glaccountsbulk] [glaccountsbulk]
  LEFT JOIN [dbo].[glaccountclassificationmappings] [glaccountclassificationmappings] ON (([glaccountsbulk].[division] = [glaccountclassificationmappings].[division]) AND ([glaccountsbulk].[code] = [glaccountclassificationmappings].[glaccountcode]))
  LEFT JOIN [dbo].[glclassifications] [glclassifications.a] ON (([glaccountclassificationmappings].[division] = [glclassifications.a].[division]) AND (LEFT([glaccountclassificationmappings].[classificationcode],(CASE WHEN 9 >= 0 THEN 9 ELSE NULL END)) = [glclassifications.a].[code]))
  LEFT JOIN [dbo].[budgets] [budgets] ON (([glaccountsbulk].[division] = [budgets].[division]) AND ([glaccountsbulk].[code] = [budgets].[glaccountcode]))
  LEFT JOIN [dbo].[reportingbalance] [reportingbalance] ON (([budgets].[division] = [reportingbalance].[division]) AND ([budgets].[glaccountcode] = [reportingbalance].[glaccountcode]) AND ([budgets].[reportingyear] = [reportingbalance].[reportingyear]) AND ([budgets].[reportingperiod] = [reportingbalance].[reportingperiod]))
  LEFT JOIN [dbo].[glclassifications] [glclassifications.b] ON (([glaccountclassificationmappings].[division] = [glclassifications.b].[division]) AND (LEFT([glaccountclassificationmappings].[classificationcode],(CASE WHEN 6 >= 0 THEN 6 ELSE NULL END)) = [glclassifications.b].[code]))

group by
	[glaccountsbulk].[code],
	[budgets].[glaccountcode],
	[glaccountclassificationmappings].[glaccountcode] ,
	[reportingbalance].[glaccountcode] ,
	  [glaccountsbulk].[division] ,
	 [budgets].[division] ,
	  [glaccountclassificationmappings].[division] ,
	  [glclassifications.a].[division] ,
	  [glclassifications.b].[division] ,
	  [reportingbalance].[division] ,
	  [glaccountsbulk].[divisionname] ,
	  [budgets].[divisionname] ,
	  [budgets].[reportingyear],
	  [reportingbalance].[reportingyear] ,
	 [budgets].[reportingperiod] ,
	 [reportingbalance].[reportingperiod] ,
      [budgets].[rowid$] ,
  [glaccountclassificationmappings].[rowid$] ,
  [glclassifications.b].[rowid$] ,
  [glclassifications.a].[rowid$] ,
  [reportingbalance].[rowid$] ,
  [glaccountsbulk].[rowid$] ,
  [reportingbalance].[balancetype] ,
  [glaccountsbulk].[balancetype] ,
  [budgets].[budgetscenariodescription] ,
  [glaccountclassificationmappings].[classification] ,
  [glaccountclassificationmappings].[classificationcode] ,
  [glaccountclassificationmappings].[classificationdescription] ,
  [glclassifications.b].[code] ,
  [glclassifications.a].[code] ,
  [glclassifications.b].[description] ,
  [glclassifications.a].[description] ,
  [glaccountsbulk].[description] ,
  [glaccountclassificationmappings].[glaccount] ,
  [reportingbalance].[glaccount] ,
  [budgets].[glaccount] ,
  [glaccountclassificationmappings].[glaccountdescription] ,
  [reportingbalance].[glaccountdescription] ,
  [budgets].[glaccountdescription] ,
  [glaccountclassificationmappings].[glschemecode]

Bron Budgets en ReportingBalance zien er zo uit:

budgets

reportingbalance

Mogelijk dat hier een oplossing te vinden is:

Deze vraag is automatisch gesloten na 2 weken inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.