2017-04-21 1 views
0
ID | NAME | Description 
A A  Value1 
A A  Value2 
B B  Value1 
C C  Value1 
C C  Value2 
C C  Value3 
D D  Value1 
D D  Value2 
D D  Value3 
D D  Value4 
D D  Value5 
D D  Value6 

나는이 입력을 가지고 있으며이를 변환하려고합니다.미리 정의 된 헤더를 사용하여 테이블 회전

ID | NAME | Desc1 | Desc2 | Desc3 | Desc4 | Desc5 | Desc6 
A A  Value1 Value2 
B B  Value1 
C C  Value1 Value2 Value3 
D D  Value1 Value2 Value3 Value4 Value5 Value6 

필자는 피벗을 수행하고 변환하려고 시도했습니다. 그러나 아무데도 가지 않을거야.

transform max([Description]) 
select ID, [Description] 
from TableName 
Group ID 
Pivot [Description] 

어떤 도움도 감사하겠습니다.

+1

[여러 행을 고유 키가있는 열로 변환] (https://stackoverflow.com/questions/45898593/transform-multiple-rows-into-columns-with-unique-key) – June7

답변

1

이름은 예약어입니다. 예약어를 이름으로 사용해서는 안됩니다.

한 가지 방법은 DCount()를 사용합니다. 테이블에는 고유 한 식별자 필드가 필요합니다. 자동 식별자는이를 위해 제공되어야합니다. 쿼리 작성 :

SELECT Table1.ID, Table1.Name, Table1.Description, Table1.NumID, 
DCount("*","Table1","ID='" & [ID] & "' AND NumID<" & [NumID])+1 AS GrpNum 
FROM Table1 
ORDER BY Table1.ID, Table1.NumID; 

그런 다음 CROSSTAB에서 해당 쿼리를 사용하십시오.

TRANSFORM First(Query3.Description) AS FirstOfDescription 
SELECT Query3.ID, Query3.Name 
FROM Query3 
GROUP BY Query3.ID, Query3.Name 
PIVOT Query3.GrpNum; 

그러나 도메인 집계 함수는 매우 큰 데이터 집합에 대한 쿼리에서 느리게 수행 할 수 있습니다.

VBA 프로 시저는 피벗 된 구조에서 '임시'테이블 (테이블은 영구적이며 데이터는 임시 임)에 레코드를 쓸 수 있습니다. 이 코드는 대규모 데이터 세트의 도메인 집계 함수를 사용하는 쿼리보다 빠르게 실행될 수 있습니다.

텍스트 파일을 자동 번호 필드가있는 '임시'테이블로 가져온 다음 제안 된 쿼리를 실행할 수 있습니다.

+0

좋아, 시도 할 것입니다. 밖으로 그것을 다시 여기에 업데이 트 –

+0

테이블이 원시 txt 파일을 활용합니다. 나는 내가 테이블에 자판을 추가하는 것이 적합하다고 생각하지 않는다. 다른 방법이 있습니까? –

+0

수정 된 답변보기 – June7

관련 문제