COUNT CLAUSE中的SQL CASE语句

5 sql join case count

我正在尝试从两个单独的表中获取产品的名称和销售数量.

我的表看起来像这样:

BOOK
Book_ID | Book_Title | Book_Author  

SOLD  
Transaction_ID | Book_ID | Customer_ID  
Run Code Online (Sandbox Code Playgroud)

我可以从以下查询中获得我想要的大部分结果

SELECT b.Book_Title, COUNT(s.Book_ID) FROM Book b, Sold s 
WHERE b.Book_ID = s.Book_ID 
GROUP BY b.Book_Title;
Run Code Online (Sandbox Code Playgroud)

但是,这仅显示至少有一次销售的产品.我想显示所有产品,如果没有销售,只显示零.我一直在搞乱这样的事情:

SELECT b.Book_Title, 
       COUNT(CASE WHEN s.Book_ID IS NULL THEN 0 ELSE s.Book_ID END) 
FROM Book b, Sold s WHERE b.Book_ID = s.Book_ID GROUP BY Book_Title;
Run Code Online (Sandbox Code Playgroud)

但该WHERE条款将结果限制为具有1个或更多销售额的结果.

任何人都可以建议解决这个问题吗?我正在使用Oracle 10g.

谢谢

Vin*_*uck 9

使用左外连接:

SELECT b.Book_Title, COUNT(s.Book_ID) 
FROM Book b left outer join Sold s on b.Book_ID = s.Book_ID 
GROUP BY b.Book_Title;
Run Code Online (Sandbox Code Playgroud)