열 그룹화를 기반으로 동적으로 열을 생성하고 SQL 데이터의 여러 행을 병합합니다
질문:
특정 열을 기준으로 데이터를 그룹화하고 동일한 열 값을 가진 여러 행을 단일 행으로 병합하여 동시에 여러 열을 생성하는 방법은 무엇입니까? 특히 "TestType" 열을 기준으로 그룹화하고 "Result" 열을 일치하는 각 "TestType" 값에 대한 별도의 열로 분할해야 합니다.
정답:
이는 SQL Server의 크로스탭(PIVOT) 을 사용하여 수행할 수 있습니다. 그러나 그룹당 열 수가 동적이면(예: 변경될 수 있음) 보다 유연한 솔루션이 필요합니다.
FOR XML PATH를 사용하는 동적 솔루션:
줄 번호로 CTE 만들기:
WITH RNs AS ( SELECT WorkOrder, TestType, Result, ROW_NUMBER() OVER (PARTITION BY WorkOrder, TestType ORDER BY (SELECT NULL)) AS RN FROM dbo.Result )
동적 SQL 문 작성:
DECLARE @SQL nvarchar(MAX); DECLARE @CRLF nvarchar(2) = CHAR(13) + CHAR(10); --回车换行符 -- 获取任何“TestType”的最大结果数 SELECT @MaxTally = MAX(C) FROM ( SELECT COUNT(*) AS C FROM dbo.Result GROUP BY WorkOrder, TestType ); -- 创建具有最大行数的计数表 WITH Tally AS ( SELECT TOP (@MaxTally) ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N), (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N) ) -- 构建动态SQL语句 SELECT @SQL = N'WITH RNs AS (' + @CRLF + N' SELECT WorkOrder, ' + @CRLF + N' TestType, ' + @CRLF + N' Result, ' + @CRLF + N' ROW_NUMBER() OVER (PARTITION BY WorkOrder, TestType ORDER BY (SELECT NULL)) AS RN ' + @CRLF + N' FROM dbo.Result)' + @CRLF + N'SELECT WorkOrder, ' + @CRLF + N' TestType, ' + @CRLF + -- 使用FOR XML PATH动态生成列 STUFF((SELECT N',' + @CRLF + CONCAT(N' MAX(CASE RN WHEN ',T.I,N' THEN Result END) AS Result',T.I) FROM Tally T ORDER BY T.I ASC FOR XML PATH(N''), TYPE).value('(./text())[1]','nvarchar(MAX)'),1,3,N'') + @CRLF + N'FROM RNs R ' + @CRLF + N'GROUP BY WorkOrder, ' + @CRLF + N' TestType;'
동적 SQL 문 실행:
PRINT @SQL; -- 查看SQL语句 EXEC sys.sp_executesql @SQL;
이 솔루션은 각 "TestType"에 대한 최대 결과 수를 기반으로 열을 동적으로 생성하여 원하는 결과를 얻습니다. @CRLF
더 나은 코드 가독성과 향상된 플랫폼 간 호환성을 위해 변수가 코드에 추가되었습니다.
위 내용은 그룹화 열을 기반으로 동적으로 생성된 열을 사용하여 여러 SQL 행을 하나로 병합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

MySQL에서 사용자 계정을 작성하고 관리하는 단계는 다음과 같습니다. 1. 사용자 만들기 : CreateUser'Newuser '@'localhost'Identifiedby'Password '; 2. 권한 할당 : GrantSelect 사용, 삽입, UpdateOnmyDatabase.to'newuser'@'localhost '; 3. 권한 오류 수정 : Revokeallprivilegesonmydatabase.from'Newuser'@'localhost '; 그런 다음 권한을 재 할당합니다. 4. 최적화 권한 : showgra를 사용하십시오

MySQL은 빠른 개발 및 중소형 응용 프로그램에 적합한 반면 Oracle은 대기업 및 고 가용성 요구에 적합합니다. 1) MySQL은 오픈 소스이며 사용하기 쉬우 며 웹 응용 프로그램 및 중소 기업에 적합합니다. 2) Oracle은 강력하고 대기업 및 정부 기관에 적합합니다. 3) MySQL은 다양한 스토리지 엔진을 지원하며 Oracle은 풍부한 엔터프라이즈 수준의 기능을 제공합니다.

다른 관계형 데이터베이스와 비교하여 MySQL의 단점에는 다음이 포함됩니다. 1. 성능 문제 : 대규모 데이터를 처리 할 때 병목 현상을 만날 수 있으며 PostgreSQL은 복잡한 쿼리 및 빅 데이터 처리에서 더 잘 수행됩니다. 2. 확장 성 : 수평 스케일링 능력은 Google 스패너 및 Amazon Aurora만큼 좋지 않습니다. 3. 기능 제한 : 고급 기능에서 PostgreSQL 및 Oracle만큼 좋지 않으면 일부 기능에는 더 많은 사용자 정의 코드 및 유지 관리가 필요합니다.

MySQL은 Innerjoin, LeftJoin, RightJoin 및 FullouterJoin의 4 가지 조인 유형을 지원합니다. 1. innerjoin은 두 개의 테이블에서 행을 일치시키고 기준을 충족하는 결과를 반환하는 데 사용됩니다. 2. Leftjoin 오른쪽 테이블이 일치하지 않더라도 왼쪽 테이블의 모든 행을 반환합니다. 3. RightJoin은 LeftJoin과 반대이며 오른쪽 테이블의 모든 행을 반환합니다. 4. FullouterNoin은 조건을 충족하거나 충족하지 않는 두 테이블의 모든 행을 반환합니다.

높은 부하에서 MySQL의 성능은 다른 RDBMS에 비해 장점과 단점이 있습니다. 1) MySQL은 IndoDB 엔진 및 인덱싱, 쿼리 캐시 및 파티션 테이블과 같은 최적화 전략을 통해 높은 하중에서 잘 수행됩니다. 2) PostgreSQL은 MVCC 메커니즘을 통해 효율적인 동시 읽기 및 쓰기를 제공하는 반면 Oracle과 Microsoft SQLServer는 각각의 최적화 전략을 통해 성능을 향상시킵니다. 합리적인 구성 및 최적화를 통해 MySQL은 높은 부하 환경에서 잘 수행 할 수 있습니다.

innodbbufferpool은 데이터와 인덱싱 페이지를 캐싱하여 디스크 I/O를 줄여 데이터베이스 성능을 향상시킵니다. 작업 원칙에는 다음이 포함됩니다. 1. 데이터 읽기 : BufferPool의 데이터 읽기; 2. 데이터 작성 : 데이터 수정 후 BufferPool에 쓰고 정기적으로 디스크로 새로 고치십시오. 3. 캐시 관리 : LRU 알고리즘을 사용하여 캐시 페이지를 관리합니다. 4. 읽기 메커니즘 : 인접한 데이터 페이지를 미리로드합니다. Bufferpool을 크기를 조정하고 여러 인스턴스를 사용하여 데이터베이스 성능을 최적화 할 수 있습니다.

다른 프로그래밍 언어와 비교할 때 MySQL은 주로 데이터를 저장하고 관리하는 데 사용되는 반면 Python, Java 및 C와 같은 다른 언어는 논리적 처리 및 응용 프로그램 개발에 사용됩니다. MySQL은 데이터 관리 요구에 적합한 고성능, 확장 성 및 크로스 플랫폼 지원으로 유명하며 다른 언어는 데이터 분석, 엔터프라이즈 애플리케이션 및 시스템 프로그래밍과 같은 해당 분야에서 이점이 있습니다.

MySQL은 데이터 저장, 관리 및 분석에 적합한 강력한 오픈 소스 데이터베이스 관리 시스템이기 때문에 학습 할 가치가 있습니다. 1) MySQL은 SQL을 사용하여 데이터를 작동하고 구조화 된 데이터 관리에 적합한 관계형 데이터베이스입니다. 2) SQL 언어는 MySQL과 상호 작용하는 열쇠이며 CRUD 작업을 지원합니다. 3) MySQL의 작동 원리에는 클라이언트/서버 아키텍처, 스토리지 엔진 및 쿼리 최적화가 포함됩니다. 4) 기본 사용에는 데이터베이스 및 테이블 작성이 포함되며 고급 사용량은 Join을 사용하여 테이블을 결합하는 것과 관련이 있습니다. 5) 일반적인 오류에는 구문 오류 및 권한 문제가 포함되며 디버깅 기술에는 구문 확인 및 설명 명령 사용이 포함됩니다. 6) 성능 최적화에는 인덱스 사용, SQL 문의 최적화 및 데이터베이스의 정기 유지 보수가 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

드림위버 CS6
시각적 웹 개발 도구
