Предложение COMPUTE для формирования данных
Предложение shape COMPUTE создает родительский набор записей, столбцы которого состоят из ссылки на дочерний набор записей; необязательные столбцы, содержимым которых являются главы, новые или вычисляемые столбцы, либо результат выполнения агрегатных функций в дочернем наборе записей или ранее сформированном наборе записей; и все столбцы из дочернего набора записей , перечисленные в необязательном предложении BY.
Синтаксис
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
Описание
Ниже приведены части этого предложения.
child-command
Состоит из одного из следующих компонентов:
Команда запроса в фигурных скобках ("{}"), которая возвращает дочерний объект Recordset . Команда выдается базовому поставщику данных, и ее синтаксис зависит от требований этого поставщика. Обычно это язык SQL, хотя для ADO не требуется какой-либо конкретный язык запросов.
Имя существующего фигурного набора записей.
Другая команда shape.
Ключевое слово TABLE, за которым следует имя таблицы в поставщике данных.
дочерний псевдоним
Псевдоним, используемый для ссылки на набор записей, возвращаемый дочерней командой.Дочерний псевдоним является обязательным в списке столбцов в предложении COMPUTE и определяет отношение между родительским и дочерним объектами Recordset .
appended-column-list
Список, в котором каждый элемент определяет столбец в созданном родительском элементе. Каждый элемент содержит столбец главы, новый столбец, вычисляемый столбец или значение, полученное из агрегатной функции дочернего объекта Recordset.
grp-field-list
Список столбцов в родительском и дочернем объектах Recordset , который указывает, как следует группировать строки в дочернем объекте.
Для каждого столбца в списке grp-field-list имеется соответствующий столбец в дочерних и родительских объектах Recordset . Для каждой строки в родительском наборе записей столбцы grp-field-list имеют уникальные значения, а дочерний набор записей , на который ссылается родительская строка, состоит исключительно из дочерних строк, столбцы которых grp-field-list имеют те же значения, что и родительская строка.
Если включено предложение BY, строки дочернего набора записей будут сгруппированы на основе столбцов в предложении COMPUTE. Родительский набор записей будет содержать по одной строке для каждой группы строк в дочернем наборе записей.
Если предложение BY опущено, то весь дочерний набор Записей обрабатывается как одна группа, а родительский recordset будет содержать ровно одну строку. Эта строка будет ссылаться на весь дочерний набор записей. Опущение предложения BY позволяет вычислить статистические выражения "общий итог" для всего дочернего набора записей.
Пример:
SHAPE {select * from Orders} AS orders COMPUTE orders, SUM(orders.OrderAmount) as TotalSales
Независимо от того, каким образом формируется родительский набор записей (с помощью COMPUTE или APPEND), он будет содержать столбец главы, который используется для связи его с дочерним набором записей. При желании родительский набор записей также может содержать столбцы, содержащие агрегаты (SUM, MIN, MAX и т. д.) над дочерними строками. Родительский и дочерний набор записей могут содержать столбцы, содержащие выражение в строке набора записей, а также столбцы, которые являются новыми и изначально пустыми.
Операция
Дочерняя команда выполняется поставщику, который возвращает дочерний объект Recordset.
Предложение COMPUTE задает столбцы родительского набора записей, которые могут быть ссылкой на дочерний набор записей, одно или несколько агрегатов, вычисляемое выражение или новые столбцы. Если имеется предложение BY, столбцы, которые оно определяет, также добавляются к родительскому набору записей. Предложение BY указывает, как группируются строки дочернего объекта Recordset .
Например, предположим, что у вас есть таблица с именем "Демография", которая состоит из полей "Штат", "Город" и "Население". (Данные о численности населения в таблице приведены исключительно в качестве примера).
Состояние | City | Заполнение |
---|---|---|
WA | Seattle | 700,000 |
ИЛИ | Медфорд | 200 000 |
ИЛИ | Портленд | 400 000 |
CA | Лос-Анджелес | 800 000 |
CA | San Diego | 600 000 |
WA | Такома | 500 000 |
ИЛИ | Корваллис | 300 000 |
Теперь выполните следующую команду фигуры:
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
Эта команда открывает фигурный набор записей с двумя уровнями. Родительский уровень — это созданный набор записей с агрегатным столбцом (SUM(rs.population)
), столбцом, ссылающимся на дочерний набор записей (rs
), и столбцом для группировки дочернего набора записей (state
). Дочерний уровень — это набор записей, возвращаемый командой запроса (select * from demographics
).
Дочерние строки сведений о наборе записей будут сгруппированы по состоянию, но в противном случае не в определенном порядке. То есть группы не будут находиться в алфавитном или числовом порядке. Если требуется упорядочить родительский набор записей , можно использовать метод Сортировка набора записей , чтобы упорядочить родительский набор Записей.
Теперь вы можете перемещаться по открытому родительскому набору записей и обращаться к дочерним объектам Recordset . Дополнительные сведения см. в разделе Доступ к строкам в иерархическом наборе записей.
Результирующий набор записей сведений о родителях и дочерних элементах
Parent
SUM (rs. Население) | rs | Состояние |
---|---|---|
1,300,000 | Ссылка на дочерний элемент1 | CA |
1 200 000 | Ссылка на child2 | WA |
1,100,000 | Ссылка на дочерний элемент3 | ИЛИ |
Child1
Состояние | City | Заполнение |
---|---|---|
CA | Лос-Анджелес | 800 000 |
CA | San Diego | 600 000 |
Child2
Состояние | City | Заполнение |
---|---|---|
WA | Seattle | 700,000 |
WA | Такома | 500 000 |
Child3
Состояние | City | Заполнение |
---|---|---|
ИЛИ | Медфорд | 200 000 |
ИЛИ | Портленд | 400 000 |
ИЛИ | Корваллис | 300 000 |
См. также:
Доступ к строкам в иерархических наборах записей
Общие сведения о формировании данных
Объект Field
Грамматика формального формирования данных
Объект Recordset (ADO)
Обязательные поставщики для формирования данных
Предложение APPEND для формирования данных
Общие сведения о командах формирования данных
Свойство Value (ADO)
Функции Visual Basic для приложений