복붙노트

[SQL] 어떻게 Access에서 UNPIVOT을 시뮬레이션?

SQL

어떻게 Access에서 UNPIVOT을 시뮬레이션?

UNPIVOT 2005 MS SQL-서버에서 사용할 수 있지만 AFAIK는 MS 액세스 2010 년에 어떻게는 온 - 보드 수단으로 구현 될 수 없다? 예를 들어, 나는 테이블이

ID | A | B | C | Key 1 | Key 2 | Key 3
---------------------------------------
 1 | x | y | z |     3 |   199 |   452
 2 | x | y | z |    57 |   234 |   452

및 테이블 등이 갖고 싶어

ID | A | B | C | Key
--------------------
 1 | x | y | z |   3
 2 | x | y | z |  57
 1 | x | y | z | 199
 2 | x | y | z | 234
 2 | x | y | z | 452

키 452는 특별한 경우이다. 현재 내가 ++ OLEDB / ATL C에서 회전을한다. 그것은 충분히 빨리이지만 나는 아직도 궁금하다. 여기에 액세스 2010 년 가장 효율적인 SQL 문은 무엇입니까?

해결법

  1. ==============================

    1.이 쿼리 ...

    이 쿼리 ...

    SELECT ID, A, B, C, [Key 1] AS key_field
    FROM tblUnpivotSource
    UNION ALL
    SELECT ID, A, B, C, [Key 2] AS key_field
    FROM tblUnpivotSource
    UNION ALL
    SELECT ID, A, B, C, [Key 3] AS key_field
    FROM tblUnpivotSource;
    

    ... 반환이 레코드 (tblUnpivotSource로 샘플 테이블 값을 사용) ...

    ID A B C key_field
    -- - - - ---------
     1 x y z         3
     2 x y z        57
     1 x y z       199
     2 x y z       234
     1 x y z       452
     2 x y z       452
    
  2. ==============================

    2.불행하게도 접근이 작업을 수행하는 쉬운 방법이 없습니다. 각 값을 얻을 수있는 UNION을 사용하여이 작업을 수행 할 수 있습니다

    불행하게도 접근이 작업을 수행하는 쉬운 방법이 없습니다. 각 값을 얻을 수있는 UNION을 사용하여이 작업을 수행 할 수 있습니다

    SELECT ID, A, B, C, [Key 1] As key
    FROM Table
    WHERE [Key 1] = 3
    
    UNION ALL
    
    SELECT ID, A, B, C, [Key 1] As key
    FROM Table
    WHERE [Key 1] = 57
    
    UNION ALL
    
    SELECT ID, A, B, C, [Key 2] As key
    FROM Table
    WHERE [Key 2] = 199
    
    UNION ALL
    
    SELECT ID, A, B, C, [Key 2] As key
    FROM Table
    WHERE [Key 2] = 234
    
    UNION ALL
    
    SELECT ID, A, B, C, [Key 3] As key
    FROM Table
    WHERE [Key 3] = 452
    
  3. ==============================

    3.

    SELECT ID, A, B, C
           , AUX_TABLE.KEY_FIELD
           , DLookUp("[" & [AUX_TABLE].[KEY_FIELD] & "]","TABLE","[ID] = " & [TABLE].[ID]) AS KEY_VALUE
    FROM TABLE, AUX_TABLE;
    

    단점은 그 작업을 계속 AUX_TABLE을 유지해야 할 것이다. 그러나 이것은 한 시간 일 경우,이 갈 방법이 될 수 있습니다.

  4. from https://stackoverflow.com/questions/7255423/how-to-simulate-unpivot-in-access by cc-by-sa and MIT license