MS Access 2007 또는 MS SQL Server 2005에서 필드를 SQL을 통해 행으로 변환하는 방법

StackOverflow https://stackoverflow.com/questions/334571

문제

역사적 판매 데이터 (실제로 연도 1 개 필드)를 나타내는 52 개의 필드 (연중 1 년마다 1 개의 필드)가 포함 된 레거시 MS Access 2007 테이블이 있습니다. 이 데이터베이스를보다 일반적인 시간/값 목록으로 변환하고 싶습니다.

52+ 명시 적 매개 변수로 쿼리를 작성하지 않고 그렇게하는 방법을 알고 있습니까?

(SQL Server 2005에 대한 솔루션이 존재하는 경우 테이블을 내보내거나 가져올 수도 있습니다).

도움이 되었습니까?

해결책

피벗 및 비 viT 사용.

UNPIVOT 거의 리버스 작동을 수행합니다 PIVOT, 열을 행으로 회전시켜. 이전 예제에서 생성 된 테이블이 데이터베이스에 다음으로 저장된다고 가정합니다. pvt, 및 열 식별자를 회전하려고합니다 Emp1, Emp2, Emp3, Emp4, 그리고 Emp5 특정 공급 업체에 해당하는 행 값으로. 즉, 두 개의 추가 열을 식별해야합니다. 회전하는 열 값을 포함하는 열 (Emp1, Emp2, ...)가 호출됩니다 Employee, 및 현재 회전중인 열 아래에있는 값을 보유 할 열은 주문이라고합니다. 이 열은 pivot_column 그리고 value_column, 각각 트랜스 팩스 SQL 정의에서. 다음은 쿼리입니다.

--Create the table and insert values as portrayed in the previous example.
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int)
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4)
INSERT INTO pvt VALUES (2,4,1,5,5,5)
INSERT INTO pvt VALUES (3,4,3,5,4,4)
INSERT INTO pvt VALUES (4,4,2,5,5,4)
INSERT INTO pvt VALUES (5,5,1,5,5,5)
GO
--Unpivot the table.
SELECT VendorID, Employee, Orders
FROM 
   (SELECT VendorID, Emp1, Emp2, Emp3, Emp4, Emp5
   FROM pvt) p
UNPIVOT
   (Orders FOR Employee IN 
      (Emp1, Emp2, Emp3, Emp4, Emp5)
)AS unpvt
GO

다음은 부분 결과 세트입니다.

VendorID   Employee   Orders
1      Emp1         4
1      Emp2         3
1      Emp3         5
1      Emp4         4
1      Emp5         4
2      Emp1         4
2      Emp2         1
2      Emp3         5
2      Emp4         5
2      Emp5         5
...

다른 팁

위에서 언급했듯이, Unpivot 연산자는 사용 가능한 경우이를 수행합니다 ...이를 사용할 수 없으면 STD SQL 접근 방식은 다음과 같습니다.

Union Multiple Select Select Statments (매주 1 개)와 동일한 열 이름 별칭의 특정 주 열을 별칭

  Select 1 as week, Week1Val as value from Table
    UNION
  Select 2 as week, Week2Val as value from Table
    UNION
  Select 3 as week, Week3Val as value from Table
    UNION
 ... 
    UNION
  Select 52 as week, Week52Val as value from Table

SQL Server로 내보낼 필요가 없습니다. 액세스하면 /보기 /피벗 테이블 서브 메뉴를 사용해보십시오. (어쨌든 내 액세스 2003에 있습니다.) 나는 Excel보다 더 좋아합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top