고수님들 도와주십시오!!! 0 2 1,597

by YJsin [2013.08.07 15:18:06]


캡처.PNG (26,230Bytes)






아래는 쿼리 작성한건대

SELECT PROD_YMD
, case when POINT_CD = 'HV01MD' then round(avg(POINT_VALUE),2) else 0 end as HV01MD
, case when POINT_CD = 'HV02MD' then round(avg(POINT_VALUE),2) else 0 end as HV02MD
, case when POINT_CD = 'HV03MD' then round(avg(POINT_VALUE),2) else 0 end as HV03MD
, case when POINT_CD = 'HV04MD' then round(avg(POINT_VALUE),2) else 0 end as HV04MD
, case when POINT_CD = 'HV05MD' then round(avg(POINT_VALUE),2) else 0 end as HV05MD
, case when POINT_CD = 'HV06MD' then round(avg(POINT_VALUE),2) else 0 end as HV06MD
FROM TB_INSP_DATA
WHERE COMP_CD = 'YJPS'
AND   PLANT_CD = '1000'
AND   TOOL_CD = 'W101'
group by PROD_YMD, POINT_CD
order by PROD_YMD


저기 있는 결과를 이런식으로 만들고 싶습니다.

PROD_YMD HV01MD HV02MD HV03MD HV04MD HV05MD HV06MD
20130524 123.2    87    123.23    86.96  0 0
20130527 123.27 86.93 0 0    0    0

.....

이런싱으로 하고 싶은대.. 어떻게 해야할지 도저히 안풀려서 고수님들의 도움을 요청해봅니다.
by 아린 [2013.08.07 15:27:51]
집계항목에 MIN/MAX 해주시고 GROUP BY 에 POINT_CD 빼주시면 됩니다.

SELECT PROD_YMD
   , MIN(case when POINT_CD = 'HV01MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV01MD
   , MIN(case when POINT_CD = 'HV02MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV02MD
   , MIN(case when POINT_CD = 'HV03MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV03MD
   , MIN(case when POINT_CD = 'HV04MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV04MD
   , MIN(case when POINT_CD = 'HV05MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV05MD
   , MIN(case when POINT_CD = 'HV06MD' 
        then round(avg(POINT_VALUE),2) else 0 end) as HV06MD
 FROM TB_INSP_DATA
WHERE COMP_CD = 'YJPS'
 AND PLANT_CD = '1000'
 AND TOOL_CD = 'W101'
group by PROD_YMD
order by PROD_YMD


by 마농 [2013.08.07 16:04:06]

CASE(AVG) 하셨네요? AVG(CASE) 하셔야 합니다.
- 전 : CASE WHEN point_cd = 'HV01MD' THEN ROUND(AVG(point_value),2) ELSE 0 END AS hv01md
- 후 : NVL(ROUND(AVG(CASE WHEN point_cd = 'HV01MD' THEN point_value END), 2), 0) hv01md
GROUP BY 항목에서 point_cd 빼시구요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입