• Steve Jones - SSC Editor (4/24/2015)


    I'd crosstab it more like this:

    SELECT customers.name,

    SUM( case when year(date) = 2014 then unitprice*qt else 0 end) AS total_2014,

    SUM( case when year(date) = 2015 then unitprice*qt else 0 end) AS total_2015,

    FROM Products

    INNER JOIN Orders ON Orders.id = Products.idOrder

    INNER JOIN Customers ON Customers.id = Orders.idCustomer

    GROUP BY customers.name

    or if you want to be more generic:

    SELECT customers.name,

    SUM( case when year(date) = year(get_date())-1 then unitprice*qt else 0 end) AS total_PreviousYear,

    SUM( case when year(date) = year(get_date()) then unitprice*qt else 0 end) AS total_CurrentYear,

    FROM Products

    INNER JOIN Orders ON Orders.id = Products.idOrder

    INNER JOIN Customers ON Customers.id = Orders.idCustomer

    GROUP BY customers.name

    ----------------------------------------------------------------------------------
    Your lack of planning does not constitute an emergency on my part...unless you're my manager...or a director and above...or a really loud-spoken end-user..All right - what was my emergency again?