mysql - 按数量对订单进行排序,甚至显示数量为 0 的位置

标签 mysql sql

我编写了这段 SQL:它返回 11 月份之后销售的商品。不过,我想显示所有已售出的商品,并在该月未售出的商品旁边贴上 0。 希望得到一些指导:

SELECT ItemID, SUM(Quantity)
FROM orderitems
WHERE OrderNumber IN(
    SELECT OrderNumber
    FROM `order`
    WHERE OrderDate > "2015-11-31") GROUP BY ItemID;

最佳答案

试试这个:

SELECT ItemID, 
       COALESCE(SUM(CASE 
                      WHEN o2.OrderDate > '2015-11-31' 
                      THEN Quantity 
                    END), 0) AS Sum_Of_Quantity 
FROM orderitems AS o1
LEFT JOIN (SELECT OrderNumber, OrderDate
           FROM `order`
           WHERE OrderDate > '2015-11-31') AS o2
   ON o1.OrderNumber = o2.OrderNumber
GROUP BY ItemID;

关于mysql - 按数量对订单进行排序,甚至显示数量为 0 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573720/

相关文章:

sql - 员工编号以T和N开头的计数

mysql - 需要帮助连接到本地服务器上的Mysql数据库

mysql - 我应该如何为具有两个范围条件的查询建立索引?

在非 O(N^2) 时间内使用滚动窗口构建 SQL 功能

mysql - 这是什么类型的文件?

sql - 如何使用 Powershell 检查 SQL Server 版本?

java - Spark SQL Java : Exception in thread "main" org. apache.spark.SparkException

mysql - 类似 Google Reader 的应用程序的数据库模式和查询

mysql - 在mysql选择查询中需要正则表达式

php - 我如何从php中的数据库中删除记录