首页 > 解决方案 > MySQL 查询辅助将过滤应用于两列

问题描述

您好,我不确定如何执行此查询以寻求指导...

输出应该是具有单行“2004 年总销售额”的
列和具有单行“2005 年总销售额”的另一列。

使用 classicmodels.orders (orderNumber, OrderDate) 和 classicmodels.orderdetails(orderNumber,PriceEach)

您如何将过滤子句应用于两个不同的列?

提前致谢

标签: mysqlsql

解决方案


您似乎正在寻找条件聚合:

SELECT
    SUM(CASE WHEN YEAR(o.OrderDate) = 2004 THEN od.PriceEach ELSE 0 END) Total_Sales_for_2004,
    SUM(CASE WHEN YEAR(o.OrderDate) = 2005 THEN od.PriceEach ELSE 0 END) Total_Sales_for_2005
FROM 
    orders o
    INNER JOIN orderdetails od ON od.orderNumber = o.orderNumber
WHERE YEAR(o.OrderDate) IN (2004, 20O5)

推荐阅读