I'm trying to optimize or change the SQL to work with inner joins rather than independent calls 

Database: one invoice can have many payment records and order (products) records

Original:

```
SELECT 
    InvoiceNum, 
    (SELECT SUM(Orders.Cost) FROM Orders WHERE Orders.Invoice = InvoiceNum  and Orders.Returned <> 1 GROUP BY Orders.Invoice) as vat_only, 
    (SELECT SUM(Orders.Vat) FROM Orders WHERE Orders.Invoice = InvoiceNum and Orders.Returned <> 1 GROUP BY Orders.Invoice) as sales_prevat, 
    (SELECT SUM(pay.Amount) FROM Payments as pay WHERE Invoices.InvoiceNum = pay.InvoiceNum ) as income
FROM 
    Invoices 
WHERE 
    InvoiceYear = currentyear

```

I'm sure we can do this another way by grouping and joining tables together. When I tried the SQL statement below, I wasn't getting the same amount (count) of records...I'm thinking in respect to the type of join or where it joins !! but still couldn't get it working after 3 hrs of looking on the screen..

So far I got to...

```
SELECT 
    Invoices.InvoiceNum, 
    Sum(Orders.Cost) AS SumOfCost, 
    Sum(Orders.VAT) AS SumOfVAT, 
    SUM(distinct Payments.Amount) as money
FROM 
    Invoices
LEFT JOIN 
    Orders ON Orders.Invoice = Invoices.InvoiceNum 
LEFT JOIN 
    Payments ON Invoices.InvoiceNum = Payments.InvoiceNum
WHERE 
    Invoices.InvoiceYear = 11 
    AND Orders.Returned <> 1
GROUP BY 
    Invoices.InvoiceNum

```

Sorry for the bad english and I'm not sure what to search for to find if it's already been answered here :D

Thanks in advance for all the help