Announcement

Collapse
No announcement yet.

Duplettenfilterung mit "Group By"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Duplettenfilterung mit "Group By"

    Hallo,

    ich möchte aus einer Kontaktdatenbank die Anzahl der Dupletten herausfiltern! Dazu nutze ich folgende "Group By" - Funktion:


    select
    sum (c.Anzahl) as [Anzahl Kontakte]


    FROM (

    select

    count (*) as Anzahl

    FROM [Test].[dbo].[Contact] as a


    GROUP BY
    a.LastName,
    a.FirstName,
    a.CompanyName,
    a.BusinessAddressCity,
    a.BusinessAddressStreet,
    a.HomeAddressCity,
    a.HomeAddressStreet

    HAVING (Count(*)> 1)


    ) as c


    Diese Abfrage funktioniert! Nun aber mein Problem:

    Ich hätte gerne einen funktionierenden Query, der immer nach lastname und firstname gruppiert und
    dazu entweder companyname, oder businessaddresscity,... oder homeaddresscity!

    Im Sinne von:

    Group by lastname and firstname and (companyname or businessaddresscity or ... or homeaddresscity)


    Mein Ziel ist es auch ungenauere Dupletten herauszufiltern!

  • #2
    Mein Ziel ist es auch ungenauere Dupletten herauszufiltern!
    Ungenaue Doubletten gibt es nicht. Mach dir mehrere Queries (die Query - nicht der Query) deren Ergebnis Du dann per UNION ALL verknüpfst:
    Code:
    SELECT sum(c.anzahl) as anzahl,'Companyname' as Typ
    FROM...
    UNION ALL
    SELECT sum(c.anzahl) as anzahl,'businessaddresscity' as Typ
    FROM...
    UNION ALL
    ...
    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Originally posted by dimitri View Post
      Ungenaue Doubletten gibt es nicht. Mach dir mehrere Queries (die Query - nicht der Query) deren Ergebnis Du dann per UNION ALL verknüpfst:
      Code:
      SELECT sum(c.anzahl) as anzahl,'Companyname' as Typ
      FROM...
      UNION ALL
      SELECT sum(c.anzahl) as anzahl,'businessaddresscity' as Typ
      FROM...
      UNION ALL
      ...
      Dim



      Danke für deine Antwort!

      Du denkst also es gibt keine Möglichkeit eine Query folgender Form zu schreiben:

      Gruppiere nach lastname und Firstname sowie nach einem Kriterium aus (x OR y OR z)).

      Comment


      • #4
        Nein. Wie sollte so eine Gruppierung denn im Ergebnis aussehen?

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Originally posted by dimitri View Post
          Nein. Wie sollte so eine Gruppierung denn im Ergebnis aussehen?

          Dim


          Ich habe einen Denkfehler festgestellt!

          Die Lösung ist durch eine Verkettung mit "union" zu erreichen, da hierbei automatisch mit "distinct" gearbeitet wird!

          Dein Vorschlag hat mich auf den richtigen Weg gebracht! Danke für deine Hilfe.

          Comment

          Working...
          X