The Problem:
I'm trying to execute a query in VBA (Excel) containing a calculation using SUM e.g.
Select SUM(field1) - SUM(field2) as 'newField' from y.
If there are no null values or empty fields then the code works perfectly, however as soon as I have one null/empty value in either field1 or field2 then a blank is returned.
So if SUM(field1) = 17 and SUM(field2) = null I want to see the query return 17 instead of a blank value.
The Code:
Public Function GetRiskRecords(ByVal strPrgNo As String) As Variant
Dim strSQL As String
strSQL = "Select [tblRiskMitigating$].RiskID, [tblRiskMitigating$].Program_No, [tblRiskMain$].RiskID, [tblRiskMain$].Program_No, [tblRiskMain$].Department, [tblRiskMain$].DateAdded, [tblRiskMain$].OwnerID, [tblRiskMain$].Description, " _
& " [tblRiskMain$].RiskTo, [tblRiskMain$].Probability, " _
& " Sum([tblRiskMain$].ScheduleImpact) - Sum([tblRiskMitigating$].ScheduleReduction) as 'NewScheduleImpact', " _
& " Sum([tblRiskMain$].CostImpact) - Sum([tblRiskMitigating$].CostReduction) as 'NewCostImpact'" _
& " From [tblRiskMain$]" _
& " Left Join [tblRiskMitigating$] on [tblRiskMain$].RiskID = [tblRiskMitigating$].RiskID AND [tblRiskMain$].Program_No = [tblRiskMitigating$].Program_No" _
& " Where [tblRiskMain$].Program_No = '" & strPrgNo & "'" _
& " Group By [tblRiskMitigating$].RiskID, [tblRiskMitigating$].Program_No, [tblRiskMain$].RiskID, [tblRiskMain$].Program_No, [tblRiskMain$].Department, [tblRiskMain$].DateAdded, [tblRiskMain$].OwnerID, [tblRiskMain$].Description, " _
& " [tblRiskMain$].RiskTo, [tblRiskMain$].Probability"
Call Open_Conn(strDb)
Call Open_RS(strSQL)
If rs.EOF Then
Debug.Print ("Error: no records")
Else
GetRiskRecords = rs.GetRows
End If
Call Close_RS
Call Close_Conn
End Function
The Background:
I have done a bit of digging around and have experimented with adding isnull and iif at the start but I haven't been able to get these to work at all (so I've omitted them from the question to reduce confusion from my original (main) question).