I need the sum of all positions from one year for every customer. In the subquery i’ve hardcoded the customernumber (mark 1) but it needs to be another customernumber for every row. The values in mark 2 are wrong.
SELECT CustomerNumber AS Kundennummer, cont.CompanyName AS Firmenname, (SELECT SUM(SumPositions) FROM OP_Invoices JOIN BAS_Customers ON OP_Invoices.Contact = BAS_Customers.Contact WHERE YEAR(DocumentDate) = 2018 AND BAS_Customers.CustomerNumber = '28673') AS '2018' FROM BAS_Customers AS cust JOIN BAS_Contacts AS cont ON cust.Contact = cont.GUID
Thanks for your help!
Advertisement
Answer
If BAS_Customers
and BAS_Contacts
have a one-to-one relationship, then you should be able to use something like this:
SELECT BAS_Customers.CustomerNumber AS Kundennummer, cont.CompanyName AS Firmenname, SUM(SumPositions) FROM OP_Invoices JOIN BAS_Customers ON OP_Invoices.Contact = BAS_Customers.Contact JOIN BAS_Contacts AS cont ON cust.Contact = cont.GUID WHERE YEAR(DocumentDate) = 2018 GROUP BY BAS_Customers.CustomerNumber, cont.CompanyName
Answering your follow up question in the comments:
SELECT BAS_Customers.CustomerNumber AS Kundennummer, cont.CompanyName AS Firmenname, SUM(case when YEAR(DocumentDate) = 2018 then SumPositions else 0 end) AS sum_2018, SUM(case when YEAR(DocumentDate) = 2019 then SumPositions else 0 end) AS sum_2019 FROM OP_Invoices JOIN BAS_Customers ON OP_Invoices.Contact = BAS_Customers.Contact JOIN BAS_Contacts AS cont ON cust.Contact = cont.GUID GROUP BY BAS_Customers.CustomerNumber, cont.CompanyName