2012-07-24 3 views

답변

7

일반적으로 레이아웃이 피벗 후 보고서 또는 사용자 인터페이스에서 더 잘 작동하기 때문입니다.

정규화 된 데이터베이스의 데이터로 인해 여러 레코드의 "모양"에 데이터가 표시 될 수 있습니다. 여기서 UI는 해당 레코드를 필드로보고 싶어합니다. 데이터 정규화는 훌륭하지만 간결하고 자연스러운 형식으로 데이터를 표현할 때는 종종 피벗 (pivoting)이 필요합니다.

example here.

내가 링크 된 예가 실제 데이터베이스가 아닌 Excel이지만 피벗 된 데이터가 더 자연스럽게 보이고 개념이 동일한 예가 그림에 나와 있습니다.

+0

감사합니다. 이 예제를 보면 피벗을 사용할 수있는 한 가지 예를 볼 수 있습니다. Prod G, Prod H, Prod I의 3 가지 새로운 제품을 추가한다고 가정합니다. 피벗 방식 (GI 테이블)을 사용하여 새로운 제품을 추가 할 수 있습니다 열 수를 늘리는 대신 행을 사용하십시오. 따라서 새 열을 추가 할 필요가 없습니다. 물론 더 많은 메모리가 필요합니다. 그러나 피벗을 누가 사용하고 싶어하는지 궁금합니다. 이유는 무엇입니까? – Master

2

어떻게 ?

How to PIVOT Data Using T-SQL

데이터 추출에서 일반적인 기대는 단일 행에 복수 열로 에게 여러 행의 출력을 변환하는 기능이다. SQL 서버 2005/2008에서는 쿼리에서 PIVOT 연산자를 사용하여이 작업을 수행 할 수 있습니다.

편집

는 날짜별로 고객 당 매출을 저장하는 테이블이 있다고 가정하자

뭔가 당신이 당 매출 합계 그리드를 표시 할 수 있습니다 PIVOT을 사용하여

Table 
- SaleDate 
- CustomerID 
- SaleAmount 

같은 월/분기/년까지 클라이언트

|Client A|Client B|Client C 
-------------------------------- 
2007| 100 | 0  | 150 
2008| 0  | 200 | 160 
2009| 110 | 180 | 100 

이것은 단순한 요약을위한 것입니다.

+0

사실, 이것이 피벗 팅의 정의입니다. 왜 누군가가 열을 행으로 변환하려고합니까? 목적은 무엇입니까? – Master

3

"왜 누군가가 열을 행으로 변환하려고합니까 (예 : 피벗), 어떤 문제가 해결됩니까?"

"데이터가 시각적으로 보이는 방식"이 아니라 "체계적으로 처리하고 처리하는 방식"의 문제입니다. 즉,

대부분의 데이터베이스에서 행은 "레코드 - (엔터티, 이벤트 등)"및 "필드 (해당 엔터티의 특성)"열을 나타냅니다. 예를 들어 아래는 데이터의 일반적인 DB 표현입니다.

Person  | Birth | Height | 
------------------------------- 
John  | 1980 | 1.82 | 
Smith  | 1987 | 2.02 | 

즉, 각 열은 "인물"의 특정 속성을 나타내며 특정 열을 선택하면 모든 사람의 특정 속성을 갖게됩니다. 이렇게하면 열은 "차원"이고 모든 값은 동일한 단위 (데이터 유형)를 가지며 모두 모두 날짜이고 길이는 모두 길이입니다.

그러나 재무 모델링에서는 다른 방식으로 데이터를 표현하는 것이 훨씬 편리합니다. 예를 들어, "Monthly Cash Flow"테이블의 전형은 다음과 같습니다. 스프레드 시트에서 이런 종류의 표는 데이터베이스 형식을 준수하지 않는

Item   | Jan | Feb | 
----------------------------- 
Sales  | $100 | $150 | 
Tax   | -$50 | -$15 | 

주, 열 제목이 시간,하지만 열의 값은 화폐 가치, 갈등, 우리는이 열 계산을 할 수 없습니다. 우리는이 테이블을 선회하는 경우

은 지금

Date   | Sales | Tax | 
------------------------------ 
Jan   | $100 | -$50 | 
Feb   | $150 | -$15 | 

이되고, 열 치수 (호)와 그 내부의 데이터가 일치한다. 날짜 열에는 모든 날짜가 있고 나머지 열에는 모두 $ 수치가 있습니다. 열을 가져 와서 벡터 연산을 수행 할 수 있습니다.

이것은 피벗 팅이 해결하는 한 가지 문제입니다.

+0

"각 행은"인물 "의 특정 속성을 나타내며 특정 행을 선택하면 모든 사람들의 특정 속성을 얻습니다."실제로 "각 열"과 "particulat 열"을 의미한다고 생각합니다. 표현을 바꾸는 자유를 취했다. 그렇지 않으면 참으로 훌륭한 예제입니다 - 감사합니다! –

관련 문제