Sto cercando di ottenere il nome di un prodotto e il suo numero di vendite da due tabelle separate.SQL CASE STATEMENT in COUNT CLAUSE
mie tabelle di qualcosa di simile a questo:
BOOK
Book_ID | Book_Title | Book_Author
SOLD
Transaction_ID | Book_ID | Customer_ID
posso ottenere la maggior parte dei risultati che voglio dalla seguente query
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;
Tuttavia, questo solo mostra i prodotti con almeno una vendita. Vorrei visualizzare tutti i prodotti, mostrando semplicemente zero se non si sono verificate vendite. Sono stato nei guai con qualcosa di simile:
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;
Ma la clausola WHERE
sta limitando i risultati a quelli con 1 o più vendite.
Qualcuno può suggerire un modo per aggirare questo? Sto usando Oracle 10g.
Grazie
Grazie, ha fatto il lavoro :) –
Nota che COUNT() sta effettivamente contando il numero di valori non nulli, motivo per cui funziona. –