[SQL] MSSQL 2008 R2 집계 기능이없는 피벗
SQLMSSQL 2008 R2 집계 기능이없는 피벗
여기에 내가 구조를 다음과 트랜스하려는 내 MSSQL 2008 [오류 코드] 테이블의 일부입니다. 나는 해결 방법을 검색을 시도하지만, 작업을 수행 할 수있는 솔루션을 찾을 수 없습니다. 나는 집계 함수를 사용할 수 없기 때문에 피벗 내가 생각하는 사용하는 것은 가능하지 않습니다. 누군가가 이것을 가능하게하는 방법에 도움이 저를 기쁘게 할 수 있습니까?
+----------+-------+---------------------------------------------------+
| SKILL ID | SKILL | PARAMETER |
+----------+-------+---------------------------------------------------+
| 1 | 121 | STANDARD VERBIAGE & PROCEDURES |
| 1 | 121 | ISSUE IDENTIFICATION |
| 1 | 121 | CALL COURTESY |
| 1 | 121 | ISSUE RESOLUTION |
| 2 | BO | COLLECTION PROCESS ADHERENCE |
| 2 | BO | INTELLIGENCE PARAMETER |
| 3 | EM | SOFT SKILLS |
| 3 | EM | PRODUCT KNOWLEDGE |
| 3 | EM | CALL CLOSING |
| 3 | EM | CALL OPENING |
| 4 | FLC | RESOLUTION |
| 4 | FLC | NONE |
| 5 | FTA | OTHERS |
| 5 | FTA | HYGIENE FACTORS |
| 5 | FTA | ACCOUNT SCREEN |
| 5 | FTA | ORDER , DOCUMENTATION AND CONFIGURATION |
| 5 | FTA | VALIDATION SCREEN |
| 5 | FTA | PARTY SCREEN |
| 5 | FTA | ORDER , DOCUMENTATION AND CONFIGURATION |
| 6 | NCE | COMPLIANCE |
| 6 | NCE | CRM |
| 6 | NCE | ACCOUNT LEVEL /INSTALLATION DETAILS CONFIRTMATION |
| 6 | NCE | CONTENTS/BILL DETAILS |
| 6 | NCE | SELFCARE |
| 6 | NCE | FEEDBACK/SATISFACTION |
| 6 | NCE | OBJECTION RESOLUTION |
| 6 | NCE | CUSTOMER HANDLING |
| 6 | NCE | RED ALERT |
| 7 | RTO | ZERO TOLERANCE |
| 7 | RTO | OVERALL IMPRESSION |
| 7 | RTO | SUMMARY AND CLOSING |
| 7 | RTO | PROCESS KNOWLEDGE |
| 7 | RTO | OPENING |
| 8 | SHMNP | SKILL AREA |
| 8 | SHMNP | CONVINCING SKILLS |
+----------+-------+---------------------------------------------------+
이 5 월 예상 출력
+-------+--------------------------------+------------------------+---------------------------------------------------+
| SKILL | PARAMETER1 | PARAMETER2 | PARAMETER3 |
+-------+--------------------------------+------------------------+---------------------------------------------------+
| 121 | STANDARD VERBIAGE & PROCEDURES | ISSUE IDENTIFICATION | CALL COURTESY |
| BO | COLLECTION PROCESS ADHERENCE | INTELLIGENCE PARAMETER | NULL |
| EM | SOFT SKILLS | PRODUCT KNOWLEDGE | CALL CLOSING |
| FLC | RESOLUTION | NONE | NULL |
| FTA | OTHERS | HYGIENE FACTORS | ACCOUNT SCREEN |
| NCE | COMPLIANCE | CRM | ACCOUNT LEVEL /INSTALLATION DETAILS CONFIRTMATION |
| RTO | ZERO TOLERANCE | OVERALL IMPRESSION | SUMMARY AND CLOSING |
| SHMNP | SKILL AREA | CONVINCING SKILLS | NULL |
+-------+--------------------------------+------------------------+---------------------------------------------------+
해결법
-
==============================
1.당신은 결과를 얻기 위해 PIVOT 기능을 사용할 수 있습니다, 당신은 도움말을 ROW_NUMBER ()를 사용해야합니다.
당신은 결과를 얻기 위해 PIVOT 기능을 사용할 수 있습니다, 당신은 도움말을 ROW_NUMBER ()를 사용해야합니다.
이에 대한 기본 쿼리는 다음과 같습니다
select skill_id, skill, parameter, row_number() over(partition by skill, skill_id order by skill_id) rn from yt;
데모와 SQL 바이올린을 참조하십시오. 나는 기술 내에서 각 행에 고유 한 값을 적용 할 ROW_NUMBER ()를 사용하고 skill_id, 당신은 PIVOT에 열으로이 행 번호 값을 사용합니다.
피벗에 전체 코드가 될 것입니다 적용 :
select skill_id, skill,[Parameter_1], [Parameter_2], [Parameter_3] from ( select skill_id, skill, parameter, 'Parameter_'+cast(row_number() over(partition by skill, skill_id order by skill_id) as varchar(10)) rn from yt ) d pivot ( max(parameter) for rn in ([Parameter_1], [Parameter_2], [Parameter_3]) ) piv;
데모와 SQL 바이올린을 참조하십시오.
각 기술에 대한 매개 변수의 알 수없는 번호가됩니다 같이 귀하의 경우에는, 그것은 보인다. 그게 사실이라면, 당신은 결과를 얻기 위해 동적 SQL을 사용하기를 원할 것입니다 :
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT distinct ',' + QUOTENAME('Parameter_' +cast(row_number() over(partition by skill, skill_id order by skill_id) as varchar(10))) from yt FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT skill_id, skill,' + @cols + ' from ( select skill_id, skill, parameter, ''Parameter_''+cast(row_number() over(partition by skill, skill_id order by skill_id) as varchar(10)) rn from yt ) x pivot ( max(parameter) for rn in (' + @cols + ') ) p ' execute(@query);
데모와 SQL 바이올린을 참조하십시오
from https://stackoverflow.com/questions/17109958/pivot-without-aggregate-function-in-mssql-2008-r2 by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PIVOT 동적에서 반환 된 결과는 두 개의 테이블을 조인 (0) | 2020.06.14 |
---|---|
[SQL] OLEDB 예외를 진단 할 때 2010 쿼리 엑셀 (0) | 2020.06.14 |
[SQL] MySQL의 : 계산 된 열 (0) | 2020.06.13 |
[SQL] PostgreSQL는 주어진 ID에 대한 가장 최근 항목을 선택 (0) | 2020.06.13 |
[SQL] 여러 열을 일치 뚜렷한 결과를 제공 SQL 쿼리 (0) | 2020.06.13 |