MySQL - 행을 열로 변환
P粉538462187
P粉538462187 2023-10-13 11:50:31
0
1
664

게시물 검색을 시도했지만 SQL Server/Access에 대한 솔루션만 찾았습니다. MySQL(5.X)에 솔루션이 필요합니다.

hostid, itemname, itemvalue라는 3개의 열이 있는 테이블(기록이라고 함)이 있습니다.

선택(select * from History)을 수행하면

이 반환됩니다. 으아악

유사한 콘텐츠를 반환하기 위해 데이터베이스를 쿼리하는 방법

으아악


P粉538462187
P粉538462187

모든 응답(1)
P粉920199761

이 문제를 해결하기 위한 단계에 대해 더 길고 자세한 설명을 추가하겠습니다. 너무 길었다면 사과드립니다.


귀하가 제공한 기초부터 시작하여 이를 사용하여 이 기사의 나머지 부분에서 사용할 몇 가지 용어를 정의하겠습니다. 이것이 기본 테이블이 됩니다:

으아아아

이것이 우리의 목표가 될 것입니다. 멋진 피벗 테이블:

으아아아

history.hostid 열의 값은 피벗 테이블의 history.hostid 列中的值将成为数据透视表中的y 值history.itemnamey 값이 됩니다. history.itemname 열의 값은 x-values

가 됩니다(명백한 이유로).

피벗 테이블 생성 문제를 해결해야 할 때는 3단계 프로세스(선택 사항인 네 번째 단계 포함)를 사용하여 문제를 해결합니다.
  1. 관심 있는 열, 즉 y 값x 값
  2. 을 선택합니다. 추가 열로 기본 테이블 확장 - 각 x 값
  3. 에 대해 하나의 열 확장 테이블 그룹화 및 집계 - y 값당
  4. 한 세트
  5. (선택사항) 집계표를 아름답게 꾸미기

다음 단계를 문제에 적용하고 결과를 살펴보겠습니다.

1단계: 관심 있는 열을 선택하세요hostid 提供y 值itemname. 원하는 결과에서 hostidy 값 을 제공하고

x 값 을 제공합니다. itemname

2단계: 추가 열을 사용하여 기본 테이블을 확장합니다

. 우리는 일반적으로 각 x 값에 대해 하나의 열을 원합니다. x 값 열은 NULL 的模式 - itemname = "A" 的行的新列 A:

입니다. 으아아아

행 수를 변경한 것이 아니라 열을 추가했을 뿐입니다. 또한 에는 null이 아닌 값이 있고 다른 새 열에는 null 값이 있습니다. 按 hostid 分组

3단계: 확장 테이블을 그룹화하고 집계합니다

. y 값을 제공하기 때문에 가 필요합니다. 으아아아 NULL

(이제 y 값당 하나의 행이 있다는 점에 유의하세요.)

좋아요, 거의 다 왔어요! 우리는 못생긴 것들을 제거하면 됩니다 .

4단계: 아름답게 꾸미기

. 결과 집합이 더 보기 좋게 보이도록 null 값을 0으로 바꾸겠습니다.
으아아아

완료되었습니다. MySQL을 사용하여 아름다운 피벗 테이블을 만들었습니다.

🎜 🎜이 프로세스를 적용할 때 주의할 사항:🎜
  • 추가 열에 사용할 값. 이 예에서는 itemvalue
  • 를 사용했습니다.
  • 추가 열에 사용할 "중립" 값. NULL,但也可能是 0""를 사용했는데 상황에 따라 다릅니다
  • 그룹화할 때 사용할 집계 함수. 나는 sum,但是 countmax 也经常使用(max 단일 행을 구성할 때 자주 사용됨) 여러 행에 분산된 "객체"를 사용함)
  • 여러 열을 사용하여 y 값을 나타냅니다. 이 솔루션은 y 값에 단일 열을 사용하는 것으로 제한되지 않습니다. 추가 열을 삽입하기만 하면 됩니다(group by 子句(并且不要忘记 select그들)

알려진 제한사항:

  • 이 솔루션은 피벗 테이블에 n개의 열을 허용하지 않습니다. 기본 테이블을 확장할 때 각 피벗 열을 수동으로 추가해야 합니다. 따라서 5 또는 10 x 값의 경우 이 솔루션이 좋습니다. 100위안, 별로 좋지 않아요. 쿼리를 생성하기 위해 저장 프로시저를 사용하는 몇 가지 솔루션이 있지만 보기 흉하고 올바르게 수행하기가 어렵습니다. 현재 피벗 테이블에 많은 열이 있어야 할 때 이 문제를 해결할 수 있는 좋은 방법이 없습니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿