2

私たちのラボのサンプルの実際の在庫であるはずのpostgreSQLクエリがあります。最初のサンプルはテーブル (tblStudies) から取得されますが、サンプルの量を減らすために 2 つのテーブルを探す必要があります。そこで、これら 2 つのテーブルのユニオン クエリを作成し、ユニウン クエリを 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"
4

1 に答える 1

1

インライン クエリ "C" に対して LEFT JOIN を実行しているため、一部の値c."stalen_gebruikt"が null になる可能性があります。そして、任意の数値 - null は null になります。これに対処するために、合体を使用できます

だから変える

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

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

于 2013-03-13T15:13:44.977 に答える