Är det alltså SUM(ITEM_OF_INVOICE.QUANTITY) som blir null?
Jag hade testat att använda funktionen nvl() för att byta eventuellt nullsvar till en nolla. Så, nu har du något att söka på. :)
mvh
3 svar · 387 visningar · startad av Viktor
Hej
Jag ska ta fram antalet sålda böcker för varje bok kategori och självklart så har läraren gjort så att det finns kategorier där det inte har sålts några böcker (jobbiga typer! ;)) och där ska det då skrivas 0. Hur gör man det? Som det är nu så blir det ett tomt fält, antar att det är null. Kör Oracle 9 och SQL satsen ser ut såhär,
SELECT TYPE_OF_BOOK.NAME, SUM(ITEM_OF_INVOICE.QUANTITY)
FROM TYPE_OF_BOOK
LEFT JOIN BOOK ON BOOK.TYPE_ID=TYPE_OF_BOOK.ID
LEFT JOIN ITEM_OF_INVOICE ON ITEM_OF_INVOICE.ISBN=BOOK.ISBN
GROUP BY TYPE_OF_BOOK.NAME;
/Viktor
Är det alltså SUM(ITEM_OF_INVOICE.QUANTITY) som blir null?
Jag hade testat att använda funktionen nvl() för att byta eventuellt nullsvar till en nolla. Så, nu har du något att söka på. :)
mvh
SUM(case when ITEM_OF_INVOICE.QUANTITY is null then 0 else ITEM_OF_INVOICE.QUANTITY end)
Tack LarsG, fungerar perfekt :)
@nders: nvl fungerade också,
SELECT TYPE_OF_BOOK.NAME, NVL(SUM(QUANTITY),'0')
FROM TYPE_OF_BOOK
LEFT JOIN BOOK ON BOOK.TYPE_ID=TYPE_OF_BOOK.ID
LEFT JOIN ITEM_OF_INVOICE ON ITEM_OF_INVOICE.ISBN=BOOK.ISBN
GROUP BY TYPE_OF_BOOK.NAME;
/Viktor