mySQL 피벗/두 개의 열 ID를 기준으로 행 병합/열로 병합/이동
긴 것에서 넓은 것으로 데이터를 가져가려는 시나리오가 있습니다.(Windows에서 MariaDB 10.2 & HeidiSQL 9.4 사용)
기본적으로, 저는 모든 'id'가 한 줄이 되도록 노력하고 있습니다.
각 'id'는 하나 이상의 'sqn'(1로 시작하는 각 ID에 대해 항상 순차적인 숫자)을 가질 수 있습니다.나는 항상 최대 'sqn' 숫자를 알지는 못합니다.
각 id-sqn 조합에 대해 'tpn'과 같이 각 'id'에 대해 값이 일정한 열이 있습니다.
각 'id'에 대해 각 'sqn'에 고유한 값을 가지는 다른 것들이 있습니다 - 예를 들어 'sqft', 'amnt' 및 '날짜'.
첫 번째는 시작 테이블이고, 두 번째는 다음과 같은 목표를 달성하고자 하는 위치입니다.
╔═════╦═════╦═════╦══════╦══════╦═════════╗
║ id ║ sqn ║ tpn ║ sqft ║ amnt ║ date ║
╠═════╬═════╬═════╬══════╬══════╬═════════╣
║ 1 ║ 1 ║ 821 ║ 110 ║ 101 ║ 1/1/00 ║
║ 1 ║ 2 ║ 821 ║ 150 ║ 195 ║ NULL ║
║ 2 ║ 1 ║ 551 ║ NULL ║ 65 ║ 6/1/15 ║
║ 2 ║ 2 ║ 551 ║ 900 ║ 190 ║ 1/1/01 ║
║ 2 ║ 3 ║ 551 ║ 220 ║ 110 ║ 1/1/05 ║
║ 3 ║ 1 ║ 821 ║ 900 ║ 44 ║ 7/1/12 ║
╚═════╩═════╩═════╩══════╩══════╩═════════╝
╔═════╦═══════╦══════╦═══════╦════════╦═══════╦═══════╦═════════╦════════
║ id ║ sqft1 ║ tpn ║ amnt1 ║ date1 ║ sqft2 ║ amnt2 ║ date2 ║ sqft3...
╠═════╬═══════╬══════╬═══════╬════════╬═══════╬═══════╬═════════╬════════
║ 1 ║ 110 ║ 821 ║ 101 ║ 1/1/00 ║ 150 ║ 195 ║ NULL ║ NULL
║ 2 ║ NULL ║ 551 ║ 65 ║ 6/1/15 ║ 900 ║ 190 ║ 1/1/01 ║ 220
║ 3 ║ 900 ║ 821 ║ 44 ║ 7/1/12 ║ NULL ║ NULL ║ NULL ║ NULL
╚═════╩═══════╩══════╩═══════╩════════╩═══════╩═══════╩═════════╩═════════
물론, 각 테이블 인스턴스를 엿보고 최대 'sqn'을 찾은 다음 수동으로 이동하는 방식으로 수동으로 풀 수 있습니다.
하지만 저는 자주 업데이트되는 이러한 유형의 테이블을 수백 개, 수천 개 가지고 있습니다. (그리고 데이터 형태를 변경할 수 없습니다. 프론트엔드에서 설계할 수 있는 것이 아니라 소비만 할 수 있습니다.)피벗 테이블 제안의 변형을 시도했지만 'id'와 'sqn'을 모두 사용하면 막힙니다(예: http://sqlfiddle.com/ #!9/09408/2/4).
감사합니다!
언급URL : https://stackoverflow.com/questions/50557714/mysql-pivot-merge-move-rows-into-columns-based-on-two-column-ids
'programing' 카테고리의 다른 글
maxscale을 통해 mariadb에 데이터베이스를 만들 수 있는 재생책 (0) | 2023.10.07 |
---|---|
이름이 있는 DispatcherServlet에서 URI가 있는 HTTP 요청에 대한 매핑을 찾을 수 없습니다. (0) | 2023.10.07 |
C/C++에 기능이 있는지 확인하는 방법은? (0) | 2023.10.07 |
혼합된 컨텐츠가 있는 보안 연결을 통해 지리적 위치에 대한 액세스가 차단되었습니다. (0) | 2023.10.07 |
Git 하위 모듈 푸시 (0) | 2023.10.07 |