Поделиться через


Свернуть группы строк (визуальные инструменты для баз данных)

применимо к:SQL Server

Вы можете создать запрос, в котором каждая строка результатов соответствует всей группе строк из исходных данных. При сворачивании строк следует учитывать несколько моментов.

  • Можно исключить повторяющиеся строки Некоторые запросы могут создавать результирующие наборы, в которых отображаются несколько одинаковых строк. Например, можно создать результирующий набор, в котором каждая строка содержит имя города и штата города, содержащего автора, но если город содержит несколько авторов, есть несколько одинаковых строк. Результирующий SQL может выглядеть следующим образом:

    SELECT city,
           state
    FROM authors;
    

    Результирующий набор, созданный предыдущим запросом, не очень полезен. Если город содержит четырех авторов, результирующий набор содержит четыре идентичные строки. Так как результирующий набор не включает столбцы, отличные от города и штата, невозможно отличить одинаковые строки друг от друга. Одним из способов избежать таких повторяющихся строк является включение дополнительных столбцов, которые могут отличать строки. Например, если вы включаете имя автора, каждая строка отличается (при условии, что два похожих автора не живут в одном городе). Результирующий SQL может выглядеть следующим образом:

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

    Конечно, предыдущий запрос устраняет симптом, но на самом деле не решает проблему. То есть результирующий набор не имеет повторяющихся данных, но он больше не является результирующим набором о городах. Чтобы исключить дубликаты в исходном результирующем наборе и по-прежнему содержать каждой строке описание города, можно создать запрос, возвращающий только отдельные строки. Результирующий SQL может выглядеть следующим образом:

    SELECT DISTINCT city,
                    state
    FROM authors;
    

    Дополнительные сведения об устранении дубликатов см. в разделе "Исключить повторяющиеся строки".

  • Можно вычислить группы строк т. е. можно суммировать сведения в группах строк. Например, можно создать результирующий набор, в котором каждая строка содержит имя города и штата города, содержащего автора, а также количество авторов, содержащихся в этом городе. Результирующий SQL может выглядеть следующим образом:

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

    Дополнительные сведения о вычислении групп строк см. в разделе "Сводка результатов запроса " и " Сортировка и группирование результатов запроса".

  • Можно использовать критерии выбора для включения групп строк Например, можно создать результирующий набор, в котором каждая строка содержит имя города и штата города, содержащего несколько авторов, а также количество авторов, содержащихся в этом городе. Результирующий SQL может выглядеть следующим образом:

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

    Дополнительные сведения о применении критериев выбора к группам строк см. в разделе "Указание условий для групп " и "Использование предложений HAVING и WHERE" в одном запросе.