database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39273 게시물 읽기
No. 39273
고수님들께 조언 부탁 드리겠습니다.
작성자
박정우(ppi1234)
작성일
2012-02-08 10:34
조회수
4,252

REGION COUNTRY PRODUCT BRAND1 GUBUN PER1 PER2 PER3 PER4 BRAND2 PER11  PER22 PER33  PER44  cnt
CHINA CHINA REFRIGERATOR SS API 144 141 141 144           4
CHINA CHINA REFRIGERATOR   TPPI         SS 73 75 75 86 4
CHINA CHINA WASHING MACHINE LG API 104 102 104 101           4
CHINA CHINA WASHING MACHINE SIEMENS API 116 116 113 113           4
CHINA CHINA WASHING MACHINE   TPPI         SIEMENS 81 96 91 95 4
CHINA CHINA WASHING MACHINE   TPPI         SS 84 105 102 106 4
CIS KAZAKHSTAN CLEANING LG API 95 90 95 93           4
CIS KAZAKHSTAN CLEANING SS API 83 85 87 85           4
CIS KAZAKHSTAN CLEANING   TPPI         SS 131 106 110 118 4
CIS KAZAKHSTAN REFRIGERATOR LG API 113 114 115 114           4
CIS KAZAKHSTAN REFRIGERATOR SS API 125 129 134 123           4
CIS KAZAKHSTAN REFRIGERATOR   TPPI         SS 93 84 86 85 4
CIS RUSSIA CLEANING LG API 90 81 81 74           6
CIS RUSSIA CLEANING SS API 76 75 74 76           6
CIS RUSSIA CLEANING   TPPI         SS 128 113 120 105 6
CIS RUSSIA MICROWAVE LG API 106 107 106 107           6
CIS RUSSIA MICROWAVE SS API 109 111 114 118           6
CIS RUSSIA MICROWAVE   TPPI         SS 110 100 101 98 6
CIS RUSSIA REFRIGERATOR LG API 107 113 107 108           6
CIS RUSSIA REFRIGERATOR SS API 129 122 124 123    

 

안녕하세요.

고수님들께 조언 좀 구하고자 글을 올리게 되었습니다.

쿼리는 아래와 같습니다.


SELECT
   A.REGION,A.COUNTRY,A.PRODUCT,
   A.BRAND1, A.GUBUN,
   MAX(A.PER1) AS PER1,MAX(A.PER2) AS PER2,MAX(A.PER3) AS PER3,MAX(A.PER4) AS PER4,
   A.BRAND2,
   MAX(A.PER11) AS PER11,MAX(A.PER22) AS PER22,MAX(A.PER33) AS PER33,MAX(A.PER44) AS PER44, COUNT(*) CNT
  FROM
(
SELECT
    A.REGION,A.COUNTRY,A.PRODUCT,A.GUBUN,
    CASE WHEN A.GUBUN = 'API' THEN A.BRAND END AS BRAND1,
    CASE WHEN A.GUBUN = 'API' THEN A.PER1 END AS PER1,
    CASE WHEN A.GUBUN = 'API' THEN A.PER2 END AS PER2,
    CASE WHEN A.GUBUN = 'API' THEN A.PER3 END AS PER3,
    CASE WHEN A.GUBUN = 'API' THEN A.PER4 END AS PER4,
    CASE WHEN A.GUBUN = 'TPPI' THEN A.BRAND END AS BRAND2,
    CASE WHEN A.GUBUN = 'TPPI' THEN A.PER1 END AS PER11,
    CASE WHEN A.GUBUN = 'TPPI' THEN A.PER2 END AS PER22,
    CASE WHEN A.GUBUN = 'TPPI' THEN A.PER3 END AS PER33,
    CASE WHEN A.GUBUN = 'TPPI' THEN A.PER4 END AS PER44
  FROM
(
SELECT  REGION
     ,COUNTRY
     ,PRODUCT
     ,BRAND
        ,MAX(DECODE(YEAR_MON, '201110' ,PER)) AS per1
        ,MAX(DECODE(YEAR_MON, '201109' ,PER)) AS per2
        ,MAX(DECODE(YEAR_MON, '201108' ,PER)) AS per3
        ,MAX(DECODE(YEAR_MON, '201107' ,PER)) AS per4
     ,MAX(AT_DESC)
     ,GUBUN
   FROM TB_IN_API_TPPI_M
   WHERE 1=1
   AND YEAR_MON BETWEEN '201107' AND '201110'
   GROUP BY REGION, COUNTRY, PRODUCT, BRAND, GUBUN
   ORDER BY REGION,COUNTRY,PRODUCT ASC   
) A 
) A GROUP BY A.REGION,A.COUNTRY,A.PRODUCT,A.BRAND1,A.BRAND2,GUBUN 
ORDER BY A.REGION,A.COUNTRY,A.PRODUCT

현재 저는 빨강색 표시부분에서 brand1, brand2 명이 같은 행은 하나로 합치고 싶습니다.

또한, brand1,brand2 가 같다는 가정하에 country별 cnt는 테이블표 같이 나왔으면 하는데요...

아직 집합적 사고 방식이 부족하여 더이상 진행하기가 버거운 상황입니다.

고수님들의 조언 간절히 부탁드리겠습니다.

 

감사합니다.!!!

이 글에 대한 댓글이 총 4건 있습니다.

SELECT 절과 GROUP BY 절에서 gubun 항목을 제거하세요.

마농(manon94)님이 2012-02-08 13:01에 작성한 댓글입니다.

마농님 안녕하세요!

문제에 대한 답변 감사드립니다.

다만, 현재 제가 직면한 문제를 잘 못 전달해드린 것 같아서요..

위 문제에 대한 결과값을 아래 표와 같이 얻고 싶은데요..

현재 결과값

country product brand1 per1 per2 brand2 per11 per22 cnt  
china ref lg 111 222       1  
china ref ss 144 254       1  
china ref       ss 45 44 1  
kaza wash lg 211 100       1  

원하는 결과값

country product brand1 per1 per2 brand2 per11 per22 cnt  
china ref lg 111 222       2  
china ref ss 144 254 ss 45 44 2  
kaza wash lg 211 100       1  

수정 후의 결과값을 얻고 싶은데요, 감이 안잡혀서요..

고수님의 답변 다시 한번 부탁드리겠습니다.

박정우님이 2012-02-08 13:34에 작성한 댓글입니다.
이 댓글은 2012-02-08 13:37에 마지막으로 수정되었습니다. Edit

brand1 과 brand2 로 나누지 마시고 brand 를 그대로 사용하세요.

수정전 : GROUP BY A.REGION,A.COUNTRY,A.PRODUCT,A.BRAND1,A.BRAND2,GUBUN 
수정후 : GROUP BY A.REGION,A.COUNTRY,A.PRODUCT,A.BRAND

마농(manon94)님이 2012-02-08 13:43에 작성한 댓글입니다.
이 댓글은 2012-02-08 13:46에 마지막으로 수정되었습니다.

마농님! 답변 감사드립니다.

말씀하신대로 수정했더니, 원하는 결과값을 얻었습니다.

다시한번 감사드립니다!!^^

박정우님이 2012-02-08 14:16에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39276expdb [1]
hyouknow
2012-02-08
3191
39275숫자 정렬 [2]
ohyouknow
2012-02-08
3451
39274모든 파일이 있을 경우 복구가 가능 한지요?
qprk
2012-02-08
3491
39273고수님들께 조언 부탁 드리겠습니다. [4]
박정우
2012-02-08
4252
39272여러개의 레코드를 하나로 그룹바이하면서 합칠수있나요? [1]
김주환
2012-02-07
4715
39270일별 가용율 통계 작업 도움 부탁 드립니다,(날자 분할) [2]
구상모
2012-02-06
4419
39269혹시..이런거 가능할까요??? [1]
일쌍다반사
2012-02-06
3742
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다