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 41932 게시물 읽기
No. 41932
row 복사하기 문의드립니다.
작성자
최상민(roice81)
작성일
2023-02-22 15:07
조회수
539

WITH t AS

(

SELECT 3512 id, 75.85 len, 6 r_cnt, 455.1 len_val, 0 d_cnt FROM dual

UNION ALL SELECT 3213, 75.85, 3, 227.55, 2 FROM dual

UNION ALL SELECT 6001, 75.85, 2, 151.7, 2 FROM dual

UNION ALL SELECT 7147, 75.85, 2, 151.7, 2 FROM dual

)

SELECT * from t


이런 테이블이 있는데요


id는 키값

len은 기본 값

r_cnt는 기본 갯수

len_val은 len * r_cnt

d_cnt는 실제 갯수


                

WITH t AS

(

SELECT 3512 id, 75.85 len, 6 r_cnt, 455.1 len_val, 0 d_cnt FROM dual

UNION ALL SELECT 3213, 75.85, 3, 227.55, 2 FROM dual

UNION ALL SELECT 3213, 75.85, 1, 75.85, 2 FROM dual

UNION ALL SELECT 6001, 75.85, 2, 151.7, 2 FROM dual

UNION ALL SELECT 7147, 75.85, 2, 151.7, 2 FROM dual

)

SELECT * from t


이런 결과값을 만들고 싶은데 도통 방법을 모르겠습니다.

d_cnt가 0은 무시하고

d_cnt 보다 r_cnt가 큰 값에 한해서 분리를 하고 싶은것입니다.

분리한 갯수에 따라  len_val는 다시 계산하려고 합니다.


염치없지만 부탁드립니다.


 

이 글에 대한 댓글이 총 2건 있습니다.
WITH t AS
(
SELECT 3512 id, 75.85 len, 6 r_cnt, 455.1 len_val, 0 d_cnt FROM dual
UNION ALL SELECT 3213, 75.85, 3, 227.55, 2 FROM dual
UNION ALL SELECT 6001, 75.85, 2, 151.70, 2 FROM dual
UNION ALL SELECT 7147, 75.85, 2, 151.70, 2 FROM dual
)
SELECT id
     , len
     , CASE lv WHEN 1 THEN r_cnt ELSE r_cnt - d_cnt END       r_cnt
     , CASE lv WHEN 1 THEN r_cnt ELSE r_cnt - d_cnt END * len len_val
     , d_cnt
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 2)
 WHERE lv <= CASE WHEN r_cnt > d_cnt AND d_cnt > 0 THEN 2 ELSE 1 END
 ORDER BY id, lv
;

 
마농(manon94)님이 2023-02-24 10:54에 작성한 댓글입니다.

마농님 감사합니다


CONNECT BY에 대해 공부을 해야겠네요


다방면으로 활용도가 있는데 잘 못쓰는것 같아요


​​​주말 잘 보내시고 감사합니다

최상민(roice81)님이 2023-02-24 23:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41935SQL 쿼리에서 인덱스 컬럼이 조건절에 없을때 인덱스 컬럼을 만들어서 검색속도 개선[DB 튜닝]
조장복
2023-03-21
518
41934데이터 저장 [1]
costudy
2023-03-12
505
41933sqldeveloper 죽었니? 살았니? [1]
전상도
2023-02-28
632
41932row 복사하기 문의드립니다. [2]
최상민
2023-02-22
539
41931기간을 보고 몇개월인지 확인하려고 합니다. [2]
임서화
2023-02-20
554
41930조인 관련 문의 드립니다. [4]
최상민
2023-02-16
598
41929인덱스를 logging 모드로 운영할 필요가 있을까요? [5]
나그네
2023-01-17
582
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다