Kristin: Doppelzählungen verhindern

Beitrag lesen

Hi!

wie kann ich Doppelzählungen, wenn ich z.B. in der where Klausel ein substr(xyz, 1, 5) verwende.

Der SQL befehl sieht ungefähr wie folgt aus:

SELECT  
    a.xyz  
    TO_CHAR(SUM(COALESCE(a.y, 0)), '99999999') AS x,  
    TO_CHAR(SUM(COALESCE(a.x, 0)), '99999999') AS y,  
    ...  
FROM ... a  
    INNER JOIN ... b ON a.plz = b.plz ...  
    INNER JOIN ... c ON ... substr(a.gkz, 1, 5) = b.gkz ...  
...

a.a ist eine 8 stellige Zahl mit führenden Nullen.

wenn z.B. folgende Zahlen existieren 00123456, 00123457, 00123458
wird der Wert von der Tabelle a 3 mal verwendet.

Aktuell löse ich es wie folgt:

SELECT  
    a.xyz  
    COALESCE(a.y, 0), '99999999') AS x,  
    COALESCE(a.x, 0), '99999999') AS y,  
FROM  
(  
    SELECT DISTINCT  
        a.plz  
        a.xyz  
        TO_CHAR(SUM(COALESCE(a.y, 0)), '99999999') AS x,  
        TO_CHAR(SUM(COALESCE(a.x, 0)), '99999999') AS y,  
        ...  
    FROM ... a  
        INNER JOIN ... b ON a.plz = b.plz ...  
        INNER JOIN ... c ON ... substr(a.gkz, 1, 5) = b.gkz ...  
    ...  
)  
...

gibt es eine elegantere Lösung?

Kristin