gpt4 book ai didi

database - 从具有 NULL 值的 postgreSQL LEFT JOIN 查询中减去 2 列

转载 作者:搜寻专家 更新时间:2023-10-30 20:42:04 25 4
gpt4 key购买 nike

我有一个 postgreSQL 查询,它应该是我们实验室样本的实际库存。初始样本取自一个表 (tblStudies),但随后需要查找 2 个表以减少样本量。所以我对这 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"

最佳答案

因为您正在对内联查询“C”执行 LEFT JOIN,所以 c."stalen_gebruikt" 的某些值可能为空。任何数字 - null 都会产生 null。为了解决这个问题,我们可以使用 coalesce

所以改变

"samplesweggezet"- c."stalen_gebruikt"AS "Stock

"samplesweggezet"- COALESCE(c."stalen_gebruikt",0) AS "Stock

关于database - 从具有 NULL 值的 postgreSQL LEFT JOIN 查询中减去 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com