我需要展示没有任何销售的书籍。总共有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)