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 40407 게시물 읽기
No. 40407
질문 드립니다.
작성자
야간비행(야간비행)
작성일
2014-03-18 15:24ⓒ
2014-03-18 15:37ⓜ
조회수
7,082
질문드립니다. 아래의 쿼리가 이해가 가질 않아서요 cols3, cols4기준으로 cols3값이 1이 없으면 무조건 한라인을 끼어넣고 싶습니다. 하기 처럼 나오게 하려면 어떻게 해야하는지 문의 드립니다.
 
WITH t AS
(
SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,20 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'20' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7, 10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'35' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,60 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'2T' COLS3,'XU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'3Y' COLS3,'XU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,20 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'ZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,40 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'5' COLS3,'ZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,50 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'71' COLS3,'IZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'45' COLS3,'IZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
)
SELECT *
  from t
  
  -----원하는 결과 쿼리
  
  
WITH t AS
(
SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,20 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'20' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7, 10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'35' COLS3,'U8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,60 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'XU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,0 COLS8 FROM DUAL --추가
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'2T' COLS3,'XU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'3Y' COLS3,'XU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,20 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'ZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,40 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'5' COLS3,'ZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,50 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'1' COLS3,'IZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,0 COLS8 FROM DUAL --추가
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'71' COLS3,'IZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
UNION ALL SELECT 'BMW' COLS1, 'DAO' COLS2,'45' COLS3,'IZU8' COLS4,'HELLOW' COLS5,'201350' COLS6,'TOTAL' COLS7,10 COLS8 FROM DUAL
)
SELECT *
  from t  
이 글에 대한 댓글이 총 2건 있습니다.

-- 1. Union 이용
SELECT cols1, cols2
     , '1' cols3
     , cols4, cols5, cols6, cols7
     , NVL(MIN(DECODE(cols3, '1', cols8)), 0) cols8
  FROM t
 GROUP BY cols1, cols2, cols4, cols5, cols6, cols7
 UNION ALL
SELECT cols1, cols2
     , cols3
     , cols4, cols5, cols6, cols7
     , cols8
  FROM t
 WHERE cols3 != '1'
 ORDER BY cols4, cols3
;
-- 2. Model 절 이용
SELECT cols1, cols2, cols3, cols4, cols5, cols6, cols7, cols8
  FROM t
 MODEL
 PARTITION BY (cols1, cols2, cols4, cols5, cols6, cols7)
 DIMENSION BY (cols3)
 MEASURES (cols8)
 IGNORE NAV
 RULES (cols8['1'] = cols8[CV()])
 ORDER BY cols4, cols3
;

마농(manon94)님이 2014-03-18 18:03에 작성한 댓글입니다.

으아~~~  아트 그 자체네요..

마농님 존경합니다. 저도 마농님처럼 뛰어난 스킬을   댓글 막 달아 드리고 싶습니다.

열공하겠습니다.

야간비행(야간비행)님이 2014-03-18 18:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40411윈도우xp에서 사용할 oracle 9.2 구합니다.
한상원
2014-03-21
6269
40410오라클 11g 서버이전
설재형
2014-03-21
6900
40409오라클 시간포함여부 쿼리 도와주세요. [2]
초보
2014-03-21
7379
40407질문 드립니다. [2]
야간비행
2014-03-18
7082
40406오라클 업데이트 쿼리 질문드려요 ㅠㅠ [2]
도토리
2014-03-17
8062
40405권한주는 방법을 알려주세요~ [1]
궁금이
2014-03-13
6972
40402안녕하십니까? ROLLUP 관련해서 문의드립니다. [2]
황인준
2014-03-13
8145
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다