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


Предложение 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 для приложений