Sql 特定年份不同列中每种商品的销售总额 1.这是正常代码

Sql 特定年份不同列中每种商品的销售总额 1.这是正常代码,sql,Sql,结果//我需要显示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 您实际需要执行查询的大部分代码都已经存在,您只需稍微重写一下,然后使用条件聚合: SELECT so.customer_id, SUM(soi.quantity*soi.list_price) AS [ITEM

结果//我需要显示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

您实际需要执行查询的大部分代码都已经存在,您只需稍微重写一下,然后使用条件聚合:

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;

对吧?!?只有当您拥有不属于订单的订单项目时,这才有意义。(想想
main table left join optional data
)您应该引入表别名,这些别名是表名的缩写。@Gordon我大体上同意您的看法,但出于学习目的,希望尽可能接近OP最初的尝试。
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;