'n'행을 열 그룹으로 분할해야하는 상황이 있습니다. 예를 들어, 다음은 데이터 세트'n'행을 열로 그룹화 - oracle
입니다COMMENT_TEXT
T1
T2
T3
T4
T5
T6
예상 출력 :
SUN MON TUE
T1 T2 T3
T4 T5 T6
내 쿼리 :
SELECT htbp1.comment_text
FROM hxc_time_building_blocks htbp,
hxc_time_building_blocks htbp1
WHERE htbp1.parent_building_block_id = htbp.time_building_block_id
AND htbp1.parent_building_block_ovn = htbp.parent_building_block_ovn
AND htbp.parent_building_block_id = 116166
AND htbp.parent_building_block_ovn = 1
ORDER BY htbp1.time_building_block_id
가 나는 'N'행이 골재없이 PIVOT을 할 수있는 방법이 있나요 기능?
편집 : 샘플 데이터 세트는 T1/T2/T3이지만 실제로는 임의의 자유 텍스트 또는 null 일 수 있습니다.
SELECT * FROM (SELECT htbp1.comment_text, TO_CHAR (htbp.start_time, 'DY') par_time,
trunc((rownum-1)/7) buck
FROM hxc_time_building_blocks htbp,
hxc_time_building_blocks htbp1,
hxc_timecard_summary hts
WHERE hts.RESOURCE_ID = :p_resource_id
AND TRUNC(hts.STOP_TIME) = TRUNC(:p_wkend_date)
AND htbp1.parent_building_block_id = htbp.time_building_block_id
AND htbp1.parent_building_block_ovn = htbp.parent_building_block_ovn
AND htbp.parent_building_block_id = hts.timecard_id
AND htbp.parent_building_block_ovn = hts.timecard_ovn
ORDER BY htbp1.time_building_block_id) PIVOT(max(comment_text) FOR par_time
IN ('SUN' AS "SUN",
'MON' AS "MON",
'TUE' AS "TUE",
'WED' AS "WED",
'THU' AS "THU",
'FRI' AS "FRI",
'SAT' AS "SAT"));
나는 다음 데이터가 미친 거 부모 인 다른 테이블 'hxc_timecard_summary'을 추가 할 때,하지만 난 처음에 하나 같이 하드 코드 된 매개 변수를 사용하는 경우 다음 행은 미세을 보이고있다.
당신은 최고입니다. 정말 고맙습니다. 두 번째 PIVOT은 작동했지만 한 가지 더 문제가 있습니다. 수정 된 질문을보실 수 있습니까? – Phani
@Phani, trunc ((rownum-1)/7) buck - 너는 이것이 필요 없어. – Multisync
@Phani DY - NLS에 따라 다르므로 조심해. – Multisync