我有一个postgreSQL查询,它应该是我们实验室的实际样品库存。 初始样本取自表(tblStudies),但随后有2个表要查找以减少样本量。 所以我对这两个表进行了联合查询,然后将uniun查询与tblStudies进行匹配,以计算实际库存。 但是联合查询仅在样本减少时给出值。 因此,当研究仍然具有初始样本时,不会返回该值。 我想我应该使用JOIN操作,但是我的初始样本的研究中有NULL值。
这是我有多远,有什么帮助吗?
SELECT
"tblStudies"."Studie_ID", "SamplesWeggezet", c."Stalen_gebruikt", "SamplesWeggezet" - c."Stalen_gebruikt" as "Stock"
FROM
"Stability"."tblStudies"
LEFT JOIN
(
SELECT b."Studie_ID",sum(b."Stalen_gebruikt") as "Stalen_gebruikt"
FROM (
SELECT "tblAnalyses"."Studie_ID", sum("tblAnalyses"."Aant_stalen_gebruikt") AS "Stalen_gebruikt"
FROM "Stability"."tblAnalyses"
GROUP BY "tblAnalyses"."Studie_ID"
UNION
SELECT "tblStalenUitKamer"."Studie_ID", sum("tblStalenUitKamer".aant_stalen) AS "stalen_gebruikt"
FROM "Stability"."tblStalenUitKamer"
GROUP BY "tblStalenUitKamer"."Studie_ID"
) b
GROUP BY b."Studie_ID"
) c ON "tblStudies"."Studie_ID" = c."Studie_ID"
答案 0 :(得分:1)
因为您正在对内联查询“C”执行LEFT JOIN,所以c."stalen_gebruikt"
的某些值可以为null。任何数字 - null都将产生null。为了解决这个问题,我们可以使用coalesce
所以改变
"samplesweggezet" - c."stalen_gebruikt" AS "Stock
到
"samplesweggezet" - COALESCE(c."stalen_gebruikt",0) AS "Stock