Hello, This time I am trying to write a query for finding out the product sales for the current year + 3 years previously (e.i. 2014,2013,2012) in order to see the trend of the product sales. to do this I started a query which has the following SQL:
SubQryTotalProductSalesFor3Years
SELECT Product.ProductName, Sum(OrderDetails.QtyOrdered) AS SumOfQtyOrdered, Year(Date()) AS CurrentYear, [CurrentYear]-1 AS LastYear, [CurrentYear]-2 AS 2YearsAgo, [CurrentYear]-3 AS 3YearsAgo
FROM Product INNER JOIN (Orders INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.fkOrderID) ON Product.ProductID = OrderDetails.fkProductID
GROUP BY Product.ProductName, Year(Date()), [CurrentYear]-1, [CurrentYear]-2, [CurrentYear]-3
ORDER BY Product.ProductName;
This query works but always pops a message box asking for the "CurrentYear" value, if I leave it blank and click ok the result is 2015 and does what is expected. Then I am using this query as a subquery in another query named Qry3yrsProductSales and it has the following SQL:
SELECT SubQryTotalProductSalesFor3Years.ProductName, SubQryTotalProductSalesFor3Years.SumOfQtyOrdered AS Quantity, SubQryTotalProductSalesFor3Years_1.SumOfQtyOrdered AS QtyYr1, SubQryTotalProductSalesFor3Years_2.SumOfQtyOrdered AS QtyYr2, SubQryTotalProductSalesFor3Years_3.SumOfQtyOrdered AS QtyYr3
FROM ((SubQryTotalProductSalesFor3Years LEFT JOIN SubQryTotalProductSalesFor3Years AS SubQryTotalProductSalesFor3Years_1 ON (SubQryTotalProductSalesFor3Years.LastYear = SubQryTotalProductSalesFor3Years_1.CurrentYear) AND (SubQryTotalProductSalesFor3Years.ProductName = SubQryTotalProductSalesFor3Years_1.ProductName)) LEFT JOIN SubQryTotalProductSalesFor3Years AS SubQryTotalProductSalesFor3Years_2 ON (SubQryTotalProductSalesFor3Years.ProductName = SubQryTotalProductSalesFor3Years_2.ProductName) AND (SubQryTotalProductSalesFor3Years.[2YearsAgo] = SubQryTotalProductSalesFor3Years_2.CurrentYear)) LEFT JOIN SubQryTotalProductSalesFor3Years AS SubQryTotalProductSalesFor3Years_3 ON (SubQryTotalProductSalesFor3Years.ProductName = SubQryTotalProductSalesFor3Years_3.ProductName) AND (SubQryTotalProductSalesFor3Years.[3YearsAgo] = SubQryTotalProductSalesFor3Years_3.CurrentYear);
This other query also pops the message box asking for the " CurrentYear" value, and then brings only the results for the current Year (2015) but not the other values. evidently I am doing something wrong but I can not figure it out. So if you could help me I will appreciate. Thank you for your help