特定年份不同列中每个项目的销售总额

时间:2020-02-20 05:39:08

标签: sql

1。这是正常的代码

SELECT A.customer_id,

        SUM(B.quantity*b.list_price) AS [ITEM SALES]

     -- ,

     --(SELECT SUM(quantity*list_price)

     -- FROM sales.order_items

     -- WHERE YEAR(order_date) = '2016') AS [TOTAL SALES 2016]

FROM sales.orders AS A

RIGHT JOIN sales.order_items AS B

ON A.order_id = B.order_id      

GROUP BY A.customer_id

ORDER BY A.customer_id ASC      

结果//我需要显示2016年的销售总额

1   30645.87
2   21653.85
3   26249.81
4   24198.88
5   19442.88
6   35857.86
7   7707.96
8   2603.95
9   26679.78

1 个答案:

答案 0 :(得分:1)

您真正需要执行查询的大多数代码已经存在,您只需要重新编写一些语句,然后使用条件聚合即可:

SELECT
    so.customer_id,
    SUM(soi.quantity*soi.list_price) AS [ITEM SALES],
    SUM(CASE WHEN YEAR(so.order_date) = 2016
             THEN soi.quantity*soi.list_price ELSE 0 END) AS [TOTAL SALES 2016]
FROM sales.orders AS so
LEFT JOIN sales.order_items AS soi
    ON so.order_id = soi.order_id
GROUP BY
    so.customer_id
ORDER BY
    so.customer_id;