2017-05-17 3 views
0

나는이 같은 MS Access에서 테이블을SQL 문 행은

-------------------------------------- 
| *Date* | *Article* | *Distance* | Value | 
--------------------------------------- 

날짜, 기사와 거리가 기본 키, 그래서 이들의 조합은 항상 고유 .

---------- 
| *Date* | *Article* | Value from Distance 0| Value Dis. 1|...|Value Dis. 27| 
---------- 

난 정말이 작업에 대한 SQL 문을 모르는 :

열 거리가 0에서 나는이 같은 테이블에이 테이블을 변환 할 필요가 27

에 이산 값이 . 정말 빠른 솔루션이 필요했기 때문에 Excel 매크로를 작성했지만 비효율적이었고 완료하는 데 몇 시간이 걸렸습니다. 이제 데이터 양이 10 배 증가 했으므로 더 이상이 매크로를 사용할 수 없습니다.

답변

0

다음과 같은 피벗 쿼리를 시도 할 수 있습니다 :

SELECT 
    Date, 
    Article, 
    MAX(IIF(Distance = 0, Value, NULL)) AS val_0, 
    MAX(IIF(Distance = 1, Value, NULL)) AS val_1, 
    ... 
    MAX(IIF(Distance = 27, Value, NULL)) AS val_27 
FROM yourTable 
GROUP BY 
    Date, 
    Article 

참고 액세스 CASE 표현식을 지원하지 않지만, 그것은의 형태로 소요 IIF()라는 기능을 제공하지 :

IIF(condition, value if true, value if false) 

을하는 기본적으로 다른 RDBMS에서 CASE과 동일한 방식으로 작동합니다.

+0

고맙습니다! – DiKo