简体   繁体   中英

SQL return row when sum value is null

I got two tables. One with a bill of material and one with purchasing orders. Now I want to display the full bill of material of a product with the total on order amounts from the table purchasing.

**Billofmaterials**
BOM_ID   BOM_Prod_id     BOM_item_id
1        5               11
2        5               13
3        6               11
4        6               15
5        6               20

Example prod_id (product id) 6 has 3 items (id 11, 15 and 20).

**Purchasing**
PU_ID   PU_item_id     PU_amount     PU_status
1       11             100           On order
2       11             650           On order
3       11             40            Received
4       20             600           On order
5       8              10            On order
6       15             150           Received

Now i got the following SQL

SELECT 
BOM_item_id,
SUM(DISTINCT purchasing.PU_amount) as total_on_order
FROM Billofmaterials
LEFT JOIN purchasing
ON Billofmaterials.BOM_item_id= purchasing.PU_item_id
AND purchasing.PU_status != 'Received'
AND BOM_prod_id = 6
GROUP BY BOM_item_id

This query returns the following:

**Query result**
BOM_item_id   total_on_order
11            750             
20            600                       

Because there is only one received purchase order for BOM_item_id 15 it doesn't return a value. Now i want to retun BOM_item_id 15 also but with a total_on_order as 0 like:

**Expected result**
BOM_item_id   total_on_order
11            750        
15            0      
20            600                       

What SQL feature/function do I need to use to get the expected result?

You can try the below -

SELECT BOM_item_id,coalesce(total_on_order,0) as total_on_order
FROM Billofmaterials left join
(
select PU_item_id,SUM(purchasing.PU_amount) as total_on_order
from purchasing
where purchasing.PU_status != 'Received'
group by PU_item_id
) purchasing
ON Billofmaterials.BOM_item_id= purchasing.PU_item_id
where BOM_prod_id = 6

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM