이 문제를 해결하기 위한 단계에 대해 더 길고 자세한 설명을 추가하겠습니다. 너무 길었다면 사과드립니다.
귀하가 제공한 기초부터 시작하여 이를 사용하여 이 기사의 나머지 부분에서 사용할 몇 가지 용어를 정의하겠습니다. 이것이 기본 테이블이 됩니다:
으아아아
이것이 우리의 목표가 될 것입니다. 멋진 피벗 테이블:
으아아아
history.hostid 열의 값은 피벗 테이블의 history.hostid 列中的值将成为数据透视表中的y 值。 history.itemnamey 값이 됩니다. history.itemname 열의 값은 x-values
가 됩니다(명백한 이유로).
피벗 테이블 생성 문제를 해결해야 할 때는 3단계 프로세스(선택 사항인 네 번째 단계 포함)를 사용하여 문제를 해결합니다.
관심 있는 열, 즉 y 값 및 x 값
을 선택합니다.
추가 열로 기본 테이블 확장 - 각 x 값
에 대해 하나의 열
확장 테이블 그룹화 및 집계 - y 값당
한 세트
(선택사항) 집계표를 아름답게 꾸미기
다음 단계를 문제에 적용하고 결과를 살펴보겠습니다.
1단계: 관심 있는 열을 선택하세요hostid 提供y 值,itemname. 원하는 결과에서 hostid는 y 값 을 제공하고
는
x 값 을 제공합니다. itemname
2단계: 추가 열을 사용하여 기본 테이블을 확장합니다
. 우리는 일반적으로 각 x 값에 대해 하나의 열을 원합니다. x 값 열은 NULL 的模式 - itemname = "A" 的行的新列 A:
입니다.
으아아아
행 수를 변경한 것이 아니라 열을 추가했을 뿐입니다. 또한 에는 null이 아닌 값이 있고 다른 새 열에는 null 값이 있습니다. 按 hostid 分组
3단계: 확장 테이블을 그룹화하고 집계합니다
. y 값을 제공하기 때문에 가 필요합니다.
으아아아
NULL
(이제 y 값당 하나의 행이 있다는 점에 유의하세요.)
좋아요, 거의 다 왔어요! 우리는 못생긴 것들을 제거하면 됩니다 .
4단계: 아름답게 꾸미기
. 결과 집합이 더 보기 좋게 보이도록 null 값을 0으로 바꾸겠습니다.
으아아아
완료되었습니다. MySQL을 사용하여 아름다운 피벗 테이블을 만들었습니다.
🎜
🎜이 프로세스를 적용할 때 주의할 사항:🎜
추가 열에 사용할 값. 이 예에서는 itemvalue
를 사용했습니다.
추가 열에 사용할 "중립" 값. NULL,但也可能是 0 或 ""를 사용했는데 상황에 따라 다릅니다
그룹화할 때 사용할 집계 함수. 나는 sum,但是 count 和 max 也经常使用(max 단일 행을 구성할 때 자주 사용됨) 여러 행에 분산된 "객체"를 사용함)
여러 열을 사용하여 y 값을 나타냅니다. 이 솔루션은 y 값에 단일 열을 사용하는 것으로 제한되지 않습니다. 추가 열을 삽입하기만 하면 됩니다(group by 子句(并且不要忘记 select그들)
알려진 제한사항:
이 솔루션은 피벗 테이블에 n개의 열을 허용하지 않습니다. 기본 테이블을 확장할 때 각 피벗 열을 수동으로 추가해야 합니다. 따라서 5 또는 10 x 값의 경우 이 솔루션이 좋습니다. 100위안, 별로 좋지 않아요. 쿼리를 생성하기 위해 저장 프로시저를 사용하는 몇 가지 솔루션이 있지만 보기 흉하고 올바르게 수행하기가 어렵습니다. 현재 피벗 테이블에 많은 열이 있어야 할 때 이 문제를 해결할 수 있는 좋은 방법이 없습니다.
이 문제를 해결하기 위한 단계에 대해 더 길고 자세한 설명을 추가하겠습니다. 너무 길었다면 사과드립니다.
귀하가 제공한 기초부터 시작하여 이를 사용하여 이 기사의 나머지 부분에서 사용할 몇 가지 용어를 정의하겠습니다. 이것이 기본 테이블이 됩니다:
으아아아이것이 우리의 목표가 될 것입니다. 멋진 피벗 테이블:
으아아아
가 됩니다(명백한 이유로).history.hostid
열의 값은 피벗 테이블의history.hostid
列中的值将成为数据透视表中的y 值。history.itemname
y 값이 됩니다.history.itemname
열의 값은 x-values1단계: 관심 있는 열을 선택하세요
는hostid
提供y 值,itemname
. 원하는 결과에서hostid
는 y 값 을 제공하고x 값 을 제공합니다.
2단계: 추가 열을 사용하여 기본 테이블을 확장합니다itemname
. 우리는 일반적으로 각 x 값에 대해 하나의 열을 원합니다. x 값 열은
입니다. 으아아아NULL
的模式 -itemname = "A"
的行的新列A
:행 수를 변경한 것이 아니라 열을 추가했을 뿐입니다. 또한 에는 null이 아닌 값이 있고 다른 새 열에는 null 값이 있습니다.
3단계: 확장 테이블을 그룹화하고 집계합니다按 hostid 分组
. y 값을 제공하기 때문에 가 필요합니다. 으아아아
(이제 y 값당 하나의 행이 있다는 점에 유의하세요.)NULL
좋아요, 거의 다 왔어요! 우리는 못생긴 것들을 제거하면 됩니다 .
4단계: 아름답게 꾸미기
. 결과 집합이 더 보기 좋게 보이도록 null 값을 0으로 바꾸겠습니다.으아아아
완료되었습니다. MySQL을 사용하여 아름다운 피벗 테이블을 만들었습니다.
🎜 🎜이 프로세스를 적용할 때 주의할 사항:🎜itemvalue
NULL
,但也可能是0
或""
를 사용했는데 상황에 따라 다릅니다sum
,但是count
和max
也经常使用(max
단일 행을 구성할 때 자주 사용됨) 여러 행에 분산된 "객체"를 사용함)group by
子句(并且不要忘记select
그들)알려진 제한사항: