SQL开发人员:添加出售的书籍数量.如果没有出售书籍,则必须显示为零



我需要展示没有任何销售的书籍。总共有14本书。我只得到11。我不确定是否需要使用汇总显示为0或其他东西。Isnull无法在表中工作。以下是我尝试获得结果的尝试。

select  b.ISBN
    ,  b.TITLE
    ,  b.RETAIL
    ,  b.COST
    ,  round(sum((b.RETAIL- b.COST)/b.COST*100),2)||'%' "Profit Percentage"  
    ,  count(*) as "Book Count" 
 from  BOOKS b   
    ,  ORDERITEMS oi
    ,  ORDERS o 
where  b.ISBN = oi.ISBN
and    oi.ORDER# = o.ORDER#  
group by(b.ISBN, b.TITLE, b.RETAIL, b.COST)
;

您的查询不会返回未订购的书籍的信息。您正在使用的隐含加入,在FROM子句中列出了多个表格,函数为 innion Join,这意味着每本书的数据必须在所有三个表中都存在,以使任何数据都返回查询。您需要使用 outer 加入以使数据在所有表中都不存在:

select  b.ISBN
    ,  b.TITLE
    ,  b.RETAIL
    ,  b.COST
    ,  round(sum((b.RETAIL- b.COST)/b.COST*100),2)||'%' "Profit Percentage"  
    ,  count(*) as "Book Count" 
  from  BOOKS b   
  LEFT OUTER JOIN ORDERITEMS oi
    ON oi.ISBN = b.ISBN
  LEFT OUTER JOIN ORDERS o 
    ON o.ORDER# = oi.ORDER#
  group by(b.ISBN, b.TITLE, b.RETAIL, b.COST)

相关内容

  • 没有找到相关文章