我有两个表Received和Issued,它们与ID字段有关。我试图使用下面的查询来获得结果,并且它只在两个表都有值时才起作用。但是,当一个表为空时,查询返回NULL值。我需要帮助,请SQL查询:从不同的表中总结两个不同的列
SELECT
c.vaccine_id,
c.name,
SUM(QRecived-IsuedQuan) Quantity
FROM
vaccine c
LEFT OUTER JOIN (
SELECT SUM(quantity_recieved) QRecived,vaccine_id from vaccine_detail group by vaccine_id
) a ON a.vaccine_id=c.vaccine_id
LEFT OUTER JOIN (
select SUM(issued_quantity) IsuedQuan,vaccine_id from issued_item group by vaccine_id
) b ON b.vaccine_id=a.vaccine_id "
GROUP BY c.vaccine_name,c.vaccine_id ";
注:上面的查询会SQLite中被运行,这仅仅是通知你,SQLLITE不支持RIGHT & FULL JOIN的
也许用SUM(coalesce(QRecived,0) - coalesce(IsuedQuan,0))替换主查询中的SUM(QRecived-IsuedQuan)'会解决这个问题吗? – FrankPl