Database 使用空值从postgreSQL左连接查询中减去2列

Database 使用空值从postgreSQL左连接查询中减去2列,database,postgresql,join,Database,Postgresql,Join,我有一个postgreSQL查询,它应该是我们实验室的实际样本库存。 最初的样本是从一个表(tblStudies)中获取的,但随后需要寻找两个表来减少样本量。 因此,我对这两个表进行了联合查询,然后将联合查询与TBL研究进行匹配,以计算实际库存。 但union查询仅在样本减少时提供值。 因此,当研究仍有初始样本时,不会返回该值。 我想我应该使用连接操作,但是对于初始样本的研究,我有空值 这是我能走多远,有什么需要帮忙的吗 SELECT "tblStudies"."Studie_ID",

我有一个postgreSQL查询,它应该是我们实验室的实际样本库存。 最初的样本是从一个表(tblStudies)中获取的,但随后需要寻找两个表来减少样本量。 因此,我对这两个表进行了联合查询,然后将联合查询与TBL研究进行匹配,以计算实际库存。 但union查询仅在样本减少时提供值。 因此,当研究仍有初始样本时,不会返回该值。 我想我应该使用连接操作,但是对于初始样本的研究,我有空值

这是我能走多远,有什么需要帮忙的吗

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"

因为您正在对内联查询“C”进行左连接,
C“stalen\u gebruikt”
的一些值可以为null。任何数字-null都将产生null。为了解决这个问题,我们可以使用coalesce

所以改变

“samplesweggezet”-c.“stalen_gebruikt”作为“股票”


“samplesweggezet”-将(c.“stalen_gebruikt”,0)合并为“股票”

谢谢,完成了任务。我不知道凝聚函数