2016-10-06 1 views
-1

안녕 얘들 아 내가 MS 액세스에서 SQL에서 UNPIVOT 사용하려고 그리고 난 다음 코드를 온라인으로 볼 : 내가 시도 때 https://www.mssqltips.com/sqlservertip/3000/use-sql-servers-unpivot-operator-to-help-normalize-output/는 피벗 해제는 액세스 SQL에서

:이 웹 페이지에서

SELECT CustomerID, Phone 
FROM 
(
    SELECT CustomerID, Phone1, Phone2, Phone3 
    FROM dbo.CustomerPhones 
) AS cp 
UNPIVOT 
(
    Phone FOR Phones IN (Phone1, Phone2, Phone3) 
) AS up; 

을 Access에서 똑같은 코드가 계속 나타납니다. FROM 절에 오류가 있습니다.

액세스 구문이 SQL 서버의 구문과 다소 다르기 때문에 이것이 궁금한가요? 누구든지이 코드를 실행하는 방법을 알려 주시면 정말 감사하겠습니다. 당신이 제거 중복의 오버 헤드가 발생 할 경우,

SELECT CustomerID, Phone1 as Phone 
FROM dbo.CustomerPhones 
UNION ALL 
SELECT CustomerID, Phone2 as Phone 
FROM dbo.CustomerPhones 
UNION ALL 
SELECT CustomerID, Phone3 as Phone 
FROM dbo.CustomerPhones; 

UNION를 사용

+0

액세스에는 내장 된 'UNPIVOT'기능이 없습니다. q.v. [여기] (http://stackoverflow.com/questions/7255423/how-to-simulate-unpivot-in-access-2010). 샘플 데이터를 포함 시키면 누군가가 해결 방법을 제공 할 수 있습니다. –

답변

3

그냥 union all를 사용합니다.

+0

@onedaywhen. . . 질문에서 'unpivot'은 중복을 반환합니다. –

+0

두 가지 잘못은 맞지 않습니다. :) – onedaywhen

0

실제 데이터베이스에서 실제로 읽는 경우 Access 관련 쿼리 대신 pass-thru를 사용하여 모든 RDMBS 관련 기능 (이 경우 MS SQL Server)을 사용할 수 있습니다. 당신이 잃는 유일한 것은 디자이너 도구입니다. 제가 말하고자하는 것은 말 그대로 그대로 쿼리를 Access에 붙여넣고 다른 Access 쿼리처럼 사용할 수 있다는 것입니다.

테이블이 이미 Access에 있거나 (연결된 데이터 소스와 분리되어 있거나) pass-thru를 통해 지원되지 않는 경우이 방법이 유용 할 수 있습니다. 그것은 꽤 무차별하지만 테이블을 만들 경우 하나의 필드 (이 예에서는 "순서"를 호출) ID라고 :

ID 
1 
2 
3 

그런 다음 당신이 교차 (직교) 할 수있는 당신의 전화 테이블에 대해 조인 :

select 
    p.[CustomerId], 
    s.[ID], 
    switch (
    s.[ID] = 1, p.[Phone1], 
    s.[ID] = 2, p.[Phone2], 
    s.[ID] = 3, p.[Phone3] 
) as Phone 
from 
    [CustomerPhones] as p, 
    [Sequence] as s 

순서 표가 또 다른 해결 방법이있을 수 있습니다 ... PostgreSQL은 완벽 할 것이다라는 함수 generate_series을 가지고,하지만 난 Access에서 해당 몰라요.