SQL Developer:添加销售的书籍数量。如果没有出售书籍,则必须显示零

时间:2018-04-02 02:37:54

标签: sql oracle null oracle-sqldeveloper

我需要展示那些没有销售的书籍。共有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)
;

1 个答案:

答案 0 :(得分:1)

您的查询不会返回尚未订购的图书的信息。您正在使用的隐含连接,FROM子句中列出的多个表,用作内部连接,这意味着对于任何数据,每个工作簿的数据必须存在于所有三个表中由查询返回。如果所有表中都不存在,则需要使用外部连接来返回数据:

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)