셰이프 COMPUTE 절

셰이프 COMPUTE 절은 열이 자식 레코드 집합에 대한 참조로 구성된 부모 레코드 집합을 생성합니다. 콘텐츠는 챕터, 새 열 또는 계산 열이거나 자식 레코드 집합 또는 이전에 셰이핑된 레코드 집합에서 집계 함수를 실행한 결과입니다. 선택적 BY 절에 나열된 자식 레코드 집합의 모든 열입니다.

구문

SHAPE child-command [AS] child-alias  
   COMPUTE child-alias [[AS] name], [appended-column-list]  
   [BY grp-field-list]  

설명

이 절의 부분은 다음과 같습니다.

child-command
다음 중 하나로 구성됩니다.

  • 자식 Recordset 개체를 반환하는 중괄호("{}") 내의 쿼리 명령입니다. 명령은 기본 데이터 공급자에게 실행되며 해당 구문은 해당 공급자의 요구 사항에 따라 달라집니다. ADO에는 특정 쿼리 언어가 필요하지 않지만 일반적으로 SQL 언어가 사용됩니다.

  • 기존 셰이핑된 Recordset의 이름입니다.

  • 다른 셰이프 명령입니다.

  • TABLE 키워드 뒤에 데이터 공급자의 테이블 이름이 옵니다.

자식 별칭
자식 명령에서 반환된 레코드 집합을 참조하는 데 사용되는 별칭입니다. 자식 별칭은 COMPUTE 절의 열 목록에 필요하며 부모 및 자식 Recordset 개체 간의 관계를 정의합니다.

appended-column-list
각 요소가 생성된 부모의 열을 정의하는 목록입니다. 각 요소에는 챕터, 열, 새 열, 계산 열 또는 자식 레코드 집합의 집계 함수로 인한 값이 포함됩니다.

grp-field-list
자식에서 행을 그룹화할 방법을 지정하는 부모 및 자식 Recordset 개체의 열 목록입니다.

grp-field-list의 각 열에 대해 자식 및 부모 Recordset 개체에 해당 열이 있습니다. 부모 레코드 집합의 각 행에 대해 grp-field-list 열에는 고유한 값이 있으며, 부모 행에서 참조하는 자식 레코드 집합grp-field-list 열이 부모 행과 동일한 값을 갖는 자식 행으로만 구성됩니다.

BY 절이 포함된 경우 자식 레코드 집합의 행은 COMPUTE 절의 열에 따라 그룹화됩니다. 부모 레코드 집합에는 자식 레코드 집합의 각 행 그룹에 대해 하나의 행이 포함됩니다.

BY 절을 생략하면 전체 자식 레코드 집합이 단일 그룹으로 처리되고 부모 레코드 집합에 정확히 하나의 행이 포함됩니다. 해당 행은 전체 자식 레코드 집합을 참조합니다. BY 절을 생략하면 전체 자식 레코드 집합에 대해 "총합계" 집계를 계산할 수 있습니다.

예시:

SHAPE {select * from Orders} AS orders             COMPUTE orders, SUM(orders.OrderAmount) as TotalSales         

부모 레코드 집합이 구성되는 방식(COMPUTE 사용 APPEND 사용)에 관계없이 자식 레코드 집합에 연결하는 데 사용되는 챕터 열이 포함됩니다. 원하는 경우 부모 레코드 집합에는 자식 행에 대한 집계(SUM, MIN, MAX 등)가 포함된 열이 있을 수도 있습니다. 부모와 자식 레코드 집합 모두 레코드 집합의 행에 있는 식이 포함된 열 및 새 열과 처음에 비어 있는 열을 포함할 수 있습니다.

연산

자식 명령은 자식 레코드 집합을 반환하는 공급자에 발급됩니다.

COMPUTE 절은 자식 레코드 집합, 하나 이상의 집계, 계산된 식 또는 새 열에 대한 참조일 수 있는 부모 레코드 집합의 열을 지정합니다. BY 절이 있는 경우 정의하는 열도 부모 레코드 집합에 추가됩니다. BY 절은 자식 레코드 집합의 행을 그룹화하는 방법을 지정합니다.

예를 들어 주, 도시 및 인구 필드로 구성된 인구 통계라는 테이블이 있다고 가정합니다. (표의 모집단 수치는 예제로만 제공됩니다).

State(상태) City 채우기
WA Seattle 700,000
또는 Medford 200,000
또는 Portland 400,000
CA 로스앤젤레스 800,000
CA 샌디에이고 600,000
WA Tacoma 500,000
또는 Corvallis 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을 정렬하려면 Recordset Sort 메서드를 사용하여 부모 Recordset을 정렬할 수 있습니다.

이제 열린 부모 레코드 집합을 탐색하고 자식 세부 정보 레코드 집합 개체에 액세스할 수 있습니다. 자세한 내용은 계층적 레코드 집합의 행 액세스를 참조하세요.

결과 부모 및 자식 세부 정보 레코드 집합

부모

SUM(rs.Population) rs State(상태)
1,300,000 child1에 대한 참조 CA
1,200,000 child2에 대한 참조 WA
1,100,000 child3에 대한 참조 또는

자식 1

State(상태) City 채우기
CA 로스앤젤레스 800,000
CA 샌디에이고 600,000

자식 2

State(상태) City 채우기
WA Seattle 700,000
WA Tacoma 500,000

자식 3

State(상태) City 채우기
또는 Medford 200,000
또는 Portland 400,000
또는 Corvallis 300,000

참고 항목

계층적 레코드 집합의 행에 액세스
데이터 셰이핑 개요
Field 개체
공식적인 셰이프 문법
레코드 집합 개체(ADO)
데이터 셰이핑에 필요한 공급자
Shape APPEND 절
일반적인 셰이프 명령
값 속성(ADO)
Visual Basic for Applications 함수