0

次のクエリを取得しました。

SELECT
        ep_101.cd_hfdmapnr AS Dossiernummer,
        SUM(ep_102.id_fhmbdlv) AS Kosten

    FROM ep_101

    INNER JOIN et_101 ON ep_101.cd_hfdmapnr = et_101.cd_hfdmapnr
    INNER JOIN ep_102 ON ep_101.cd_hfdmapnr = ep_102.cd_hfdmapnr

    WHERE ep_101.cd_mapkverw = 0 
    AND ep_102.cd_bkcode = '000010' 
    AND et_101.opdrachtgever1 = '05354605'

    GROUP BY ep_101.cd_hfdmapnr

    UNION

    SELECT
        ep_101.cd_hfdmapnr AS Dossiernummer,
        SUM(ep_102.id_fhmbdlv) AS GriffieKosten

    FROM ep_101

    INNER JOIN et_101 ON ep_101.cd_hfdmapnr = et_101.cd_hfdmapnr
    INNER JOIN ep_102 ON ep_101.cd_hfdmapnr = ep_102.cd_hfdmapnr

    WHERE ep_101.cd_mapkverw = 0 
    AND ep_102.cd_bkcode = '000020' 
    AND et_101.opdrachtgever1 = '05354605'

    GROUP BY ep_101.cd_hfdmapnr

結果は Dossiernummer と Kosten のみを返しますが、「Griffiekosten」も表示されるようにするにはどうすれば再作成できますか? 私はアイデアが不足しているので....

4

2 に答える 2

1

本当に 2 つの列で表示する必要がある場合:

SELECT
    ep_101.cd_hfdmapnr AS Dossiernummer,
    SUM(case when ep_102.cd_bkcode = '000010' then ep_102.id_fhmbdlv else 0 end) AS Kosten,
    SUM(case when ep_102.cd_bkcode = '000020' then ep_102.id_fhmbdlv else 0 end) AS GriffieKosten
FROM ep_101
    INNER JOIN et_101 ON ep_101.cd_hfdmapnr = et_101.cd_hfdmapnr
    INNER JOIN ep_102 ON ep_101.cd_hfdmapnr = ep_102.cd_hfdmapnr
WHERE ep_101.cd_mapkverw = 0 
    AND ep_102.cd_bkcode in ('000010', '000020')
    AND et_101.opdrachtgever1 = '05354605'
GROUP BY ep_101.cd_hfdmapnr
于 2012-10-16T09:13:25.973 に答える
0

それらが表示されます!
UNION を使用する場合、列名は UNION の最初の名前に従います。この場合は Dossiernummer & Kosten です。

ちょっとした質問ですが、本当に UNION を使用しますか? Kosten と Griffiekosten は同じですか? そうでない場合、UNION は間違った方法です。

それらが異なるタイプの値であると仮定しますが、結果を各 Dossiernummer ごとに両方表示したい場合は、(Dossiernummer で) JOIN を見ています。

次のようなもの:

SELECT Isnull(T1.DOSSIERNUMMER, T2.DOSSIERNUMMER) AS Dossiernummer, 
       T1.KOSTEN, 
       T2.GRIFFIEKOSTEN 
FROM   (SELECT EP_101.CD_HFDMAPNR     AS Dossiernummer, 
               Sum(EP_102.ID_FHMBDLV) AS Kosten 
        FROM   EP_101 
               INNER JOIN ET_101 
                       ON EP_101.CD_HFDMAPNR = ET_101.CD_HFDMAPNR 
               INNER JOIN EP_102 
                       ON EP_101.CD_HFDMAPNR = EP_102.CD_HFDMAPNR 
        WHERE  EP_101.CD_MAPKVERW = 0 
               AND EP_102.CD_BKCODE = '000010' 
               AND ET_101.OPDRACHTGEVER1 = '05354605' 
        GROUP  BY EP_101.CD_HFDMAPNR)T1 
       FULL OUTER JOIN (SELECT EP_101.CD_HFDMAPNR     AS Dossiernummer, 
                               Sum(EP_102.ID_FHMBDLV) AS GriffieKosten 
                        FROM   EP_101 
                               INNER JOIN ET_101 
                                       ON EP_101.CD_HFDMAPNR = 
                                          ET_101.CD_HFDMAPNR 
                               INNER JOIN EP_102 
                                       ON EP_101.CD_HFDMAPNR = 
                                          EP_102.CD_HFDMAPNR 
                        WHERE  EP_101.CD_MAPKVERW = 0 
                               AND EP_102.CD_BKCODE = '000020' 
                               AND ET_101.OPDRACHTGEVER1 = '05354605' 
                        GROUP  BY EP_101.CD_HFDMAPNR)T2 
                    ON T1.DOSSIERNUMMER = T2.DOSSIERNUMMER 
于 2012-10-16T09:14:33.880 に答える