다음 쿼리가 있습니다.
SELECT * FROM tblCommissionNew
PIVOT(Sum(cost)
for stage in (1,2,3))
where quote_id=207
1 단계와 2 단계에 값이 있으므로 2 개의 행을 생성합니다.
현재 출력은
COMMISSIONID CONSUMPTION QUOTE_ID CALC_DATE COMM_PAID STATEMENT_ID COMM_PAY_DATE 1 2 3
449 9560 207 06-FEB-17 N 5 38.24
95010 4780 207 30-JUN-17 2472 19.12
(올바르게 포맷하는 방법을 잘 모르겠습니다)
이러한 결과를 그룹화하여 내 출력이 될 수 있습니까?
Quote ID / Stage 1 / Stage 2 / Stage 3
207 / 32.77 / 44.98 / null
피벗은 본질적으로 그 자체로 일종의 그룹화입니다. 여기서 문제는 COMMISSIONID
각 행에서 다른 모든 열을 유지한다는 것 입니다. 피벗에 넣지 않았지만 select 문에 포함시키는 것은 모두 그룹화됩니다. 코드를 수정하기 위해해야 할 일은 피벗하기 전에 먼저 테이블에서 필요한 열을 가져 오는 것뿐입니다. 아래 예제에서는 먼저 QUOTE_ID, STAGE 및 COST를 잡고 피벗하기 전에 select 문을 둘러 쌉니다.
with tblCommissionNew as
(select 449 COMMISSIONID,9560 CONSUMPTION, 207 quote_id, '06-FEB-17' CALC_DATE, 'N' COMM_PAID, 1 stage, 32.77 cost from dual
union all
select 95010, 4780, 207,'30-JUN-17',null, 2, 44.98 from dual
)
select * from(
select QUOTE_ID, STAGE, COST
from tblCommissionNew
)
pivot(sum(cost)
for stage in (1,2,3)) A
where quote_id = 207
산출:
QUOTE_ID 1 2 3
207 32.77 44.98
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다