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 41519 게시물 읽기
No. 41519
도와 주세요.. 제발.. 쿼리 문제 입니다.
작성자
도와주세요..제발
작성일
2018-01-31 15:09
조회수
5,647

안녕하세요..

왕 초보 개발자 입니다. sql 때문에.. 답답해서요...

 

col1 col2 col3

---------------------------------

rawm1 z 12

rawm2 z 10

rawm3 z 9

rawm4 v 200

rawm5 z 10

rawm6 z 12

 

여기에서 col2의 v (rawm4) 가 제품이며, rawm1,2,3,5,6 은 rawm4 를 만들기 위한 원료 입니다.

이 결과를 아래와 같이 나타내야 합니다.

 

col1 col2 col3 col4

---------------------------------------------------

rawm4 z rawm1 12

rawm4 z rawm2 10

rawm4 z rawm3 9

rawm4 z rawm5 10

rawm4 z rawm6 12

 

아 고수님들 도움의 손길 꼭 부탁 드립니다.

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

/*=======================================

 *  제품과 원료의 관계가 있어야 할 것 같은데요

 * 보여주신 자료만으로는 아래 쿼리 밖에 작성할수 없을 거 같습니다.

 *=======================================*/

WITH RT(COL1, COL2, COL3) AS (
  SELECT 'rawm1', 'z',  12 FROM DUAL UNION ALL
  SELECT 'rawm2', 'z',  10 FROM DUAL UNION ALL
  SELECT 'rawm3', 'z',   9 FROM DUAL UNION ALL
  SELECT 'rawm4', 'v', 200 FROM DUAL UNION ALL
  SELECT 'rawm5', 'z',  10 FROM DUAL UNION ALL
  SELECT 'rawm6', 'z',  12 FROM DUAL
)
SELECT (SELECT COL1
         FROM RT
        WHERE COL1 = 'rawm4'
          AND COL2 = 'v') COL1
     , COL2 AS COL2
     , COL1 AS COL3
     , COL3 AS COL4
  FROM RT
 WHERE COL2 = 'z' 

삐르짱님이 2018-01-31 17:42에 작성한 댓글입니다.
이 댓글은 2018-01-31 17:47에 마지막으로 수정되었습니다. Edit

WITH t AS
(
SELECT 'rawm1' col1, 'z' col2, 12 col3 FROM dual
UNION ALL SELECT 'rawm2', 'z',  10 FROM dual
UNION ALL SELECT 'rawm3', 'z',   9 FROM dual
UNION ALL SELECT 'rawm4', 'v', 200 FROM dual
UNION ALL SELECT 'rawm5', 'z',  10 FROM dual
UNION ALL SELECT 'rawm6', 'z',  12 FROM dual
)
-- Self Join --
SELECT a.col1
     , b.col2
     , b.col1 col3
     , b.col3 col4
  FROM t a
     , t b
 WHERE a.col2 = 'v'
   AND b.col2 = 'z'
;
-- 분석함수 --
SELECT *
  FROM (SELECT MIN(DECODE(col2, 'v', col1)) OVER() col1
             , col2
             , col1 col3
             , col3 col4
          FROM t
        )
 WHERE col2 = 'z'
;
-- 계층 쿼리 --
SELECT PRIOR col1 col1
     , col2
     , col1 col3
     , col3 col4
  FROM t
 WHERE LEVEL = 2
 START WITH col2 = 'v'
 CONNECT BY col2 = 'z' AND LEVEL = 2
;

마농(manon94)님이 2018-01-31 17:51에 작성한 댓글입니다.
이 댓글은 2018-01-31 17:53에 마지막으로 수정되었습니다.

아 주옥 같은 쿼리 들이네요... 계층 쿼리도 있고...

보내 주신 쿼리들 중 선택해서 원하는 답을 얻을 수 있을 거 같습니다.

 

소중한 답변 너무 감사 드립니다.

건승하세요.. !!!!! 짱 입니다. ㅋㅋㅋㅋ

도와주세요..제발님이 2018-02-01 08:50에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41522주소에서 번지까지만 추출 [3]
쿼리질문
2018-02-06
5827
41521insert시 점점 느려지는 현상
황의중
2018-02-01
5434
41520하단 합계값에 대한 비율을 구하고 싶습니다. [1]
봉달이
2018-01-31
6008
41519도와 주세요.. 제발.. 쿼리 문제 입니다. [3]
도와주세요..제발
2018-01-31
5647
41518한글 <ㅡ> 영문 변환 관련 질문입니다. [1]
허광민
2018-01-29
5954
41517저번에 마농님이 봐 주신 sql 입니다. [1]
봉달이
2018-01-26
5917
41516oracle client12c -> Linux redhat 7.4에 설치시 오류 [1]
oracle
2018-01-24
5658
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다