Delen via


Groepen van rijen samenvouwen (Hulpmiddelen voor visuele databases)

van toepassing op:SQL Server-

U kunt een queryresultaat maken waarin elke resultaatrij overeenkomt met een hele groep rijen uit de oorspronkelijke gegevens. Wanneer u rijen samenvouwt, zijn er verschillende dingen waarmee u rekening moet houden:

  • U kunt dubbele rijen elimineren Sommige query's kunnen resultatensets maken waarin meerdere identieke rijen worden weergegeven. U kunt bijvoorbeeld een resultatenset maken waarin elke rij de plaats en staatsnaam van een plaats bevat die een auteur bevat, maar als een stad meerdere auteurs bevat, zijn er verschillende identieke rijen. De resulterende SQL kan er als volgt uitzien:

    SELECT city,
           state
    FROM authors;
    

    De resultatenset die door de voorgaande query is gegenereerd, is niet erg nuttig. Als een plaats vier auteurs bevat, bevat de resultatenset vier identieke rijen. Omdat de resultatenset geen andere kolommen bevat dan plaats en staat, is er geen manier om de identieke rijen van elkaar te onderscheiden. Een manier om dergelijke dubbele rijen te voorkomen, is door extra kolommen op te nemen die de rijen anders kunnen maken. Als u bijvoorbeeld de naam van de auteur opneemt, is elke rij anders (mits er geen twee like-named auteurs wonen binnen één plaats). De resulterende SQL kan er als volgt uitzien:

    SELECT city,
           state,
           fname,
           minit,
           lname
    FROM authors;
    

    Natuurlijk elimineert de voorgaande query het symptoom, maar lost het probleem niet echt op. Dat wil gezegd, de resultatenset heeft geen duplicaten, maar het is geen resultatenset meer over steden. Als u duplicaten in de oorspronkelijke resultatenset wilt elimineren en elke rij nog steeds een plaats wilt beschrijven, kunt u een query maken die alleen afzonderlijke rijen retourneert. De resulterende SQL kan er als volgt uitzien:

    SELECT DISTINCT city,
                    state
    FROM authors;
    

    Zie Dubbele rijen uitsluiten voor meer informatie over het elimineren van duplicaten.

  • U kunt berekenen op groepen rijen Dat wil gezegd, u kunt informatie samenvatten in groepen rijen. U kunt bijvoorbeeld een resultatenset maken waarin elke rij de plaats en staatsnaam van een plaats bevat die een auteur bevat, plus een telling van het aantal auteurs in die stad. De resulterende SQL kan er als volgt uitzien:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state;
    

    Zie Queryresultaten samenvatten en queryresultaten sorteren en groeperen voor meer informatie over het berekenen van groepen rijen.

  • U kunt selectiecriteria gebruiken om groepen rijen op te nemen U kunt bijvoorbeeld een resultatenset maken waarin elke rij de plaats en staatsnaam van een stad bevat die meerdere auteurs bevat, plus een telling van het aantal auteurs in die stad. De resulterende SQL kan er als volgt uitzien:

    SELECT city,
           state,
           COUNT(*)
    FROM authors
    GROUP BY city, state
    HAVING COUNT(*) > 1;
    

    Zie Voorwaarden voor groepen opgeven en HAVING- en WHERE-componenten gebruiken in dezelfde query voor meer informatie over het toepassen van selectiecriteria voor groepen.