The join structure here is a little different to what I'm used to in SQL Server. For some reason, Access adds brackets round everything.
When I run this, it's lightning fast:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt
FROM StructureCompanyCodes
LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])
When I run this, it takes at least 15 seconds to bring back data and the baddebt_CURR table isn't that large. From the brackets, it looks like it's returning a resultset from the first join and then joining tht again to the baddebt_CURR table:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt, Sum(baddebt_CURR.[Bad Debt]) AS [SumOfBad Debt]
FROM (StructureCompanyCodes LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
LEFT JOIN baddebt_CURR ON StructureCompanyCodes.[Company Code] = baddebt_CURR.CoCd
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])
All I want to do is join from the first table onto both tables and group the data. Any ideas if the join is wrong?
When I run this, it's lightning fast:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt
FROM StructureCompanyCodes
LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])
When I run this, it takes at least 15 seconds to bring back data and the baddebt_CURR table isn't that large. From the brackets, it looks like it's returning a resultset from the first join and then joining tht again to the baddebt_CURR table:
SELECT IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code]) AS Expr1, ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))/1000) AS Months0To3, ((Sum([121To150])+Sum([151To180]))/1000) AS Months4To5, (Sum([181To365])/1000) AS Months6To12, (Sum([MoreThan366])/1000) AS [Months12+], ((Sum([1To90])+Sum([Not Due])+Sum([91To120]))+(Sum([121To150])+Sum([151To180]))+Sum([181To365])+Sum([MoreThan366]))/1000 AS TotalDebt, Sum(baddebt_CURR.[Bad Debt]) AS [SumOfBad Debt]
FROM (StructureCompanyCodes LEFT JOIN zarageddebt_CURR ON StructureCompanyCodes.[Company Code] = zarageddebt_CURR.CoCd)
LEFT JOIN baddebt_CURR ON StructureCompanyCodes.[Company Code] = baddebt_CURR.CoCd
GROUP BY IIf(Len([Company Code])=2,"00" & [Company Code],[Company Code])
All I want to do is join from the first table onto both tables and group the data. Any ideas if the join is wrong?