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 41508 게시물 읽기
No. 41508
임의로 row수 늘이기
작성자
초보입니다.
작성일
2018-01-11 16:26:03
조회수
868

tabel 구조가

고객번호 ,월, 수량 이렇게 되어있습니다.

 

그리고 데이타는

 

고객번호 ,월, 수량

A 1 100

A 2 200

C 1 100

C 5 200

C 12 200

이런식으로 월별 수량이 들어가있는데 수량이 없는달은 row자체가 없습니다.

 

제가 원하는 쿼리는 기준월을 1월에서 12월로 놓고

 

고객번호 ,월, 수량

A 1 100

A 2 200

A 3 0

A 4 0

.....

A 12 0

C 1 100

C 2 0

C 3 0

C 4 0

C 5 200

C 6 0

......

C 12 200

 

이런식으로 기준월이 1월부터 12개월이니 각 고객사마다 12개월 데이타 Row수가 각 고객사마다 12개씩

나오게 쿼리를 짜야 되는데 생각이 안나네요

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

참고하세요.

with 고객 AS
( select 'A' 고객번호 from dual
  union all select 'B' 고객번호 from dual
  union all select 'C' 고객번호 from dual
),
월 AS (
  select level 월 from dual connect by level <=12
)

select t.고객번호, t.월, NVL(l.수량, 0) 수량
from
( select * from 고객, 월 ) t
left join
( select 'A' 고객번호, 1 월, 100 수량 from dual ) l on l.고객번호 = t.고객번호 and l.월=t.월
order by t.고객번호, t.월

박인호(paerae)님이 2018-01-12 16:59:13에 작성한 댓글입니다.

 고객 테이블이 따로 있다고 가정하면 
1월부터 12월 까지 임시 row를 만들어 크로스 조인을 한다음

원 테이블을 left 조인으로 처리하면 됩니다.

박인호(paerae)님이 2018-01-12 17:00:51에 작성한 댓글입니다.

WITH cust AS
(
SELECT 'A' cno, 1 mm, 100 cnt FROM dual
UNION ALL SELECT 'A',  2, 200 FROM dual
UNION ALL SELECT 'C',  1, 100 FROM dual
UNION ALL SELECT 'C',  5, 200 FROM dual
UNION ALL SELECT 'C', 12, 200 FROM dual
)
SELECT b.cno
     , a.mm
     , NVL(b.cnt, 0) cnt
  FROM (SELECT LEVEL mm FROM dual CONNECT BY LEVEL <= 12) a
  LEFT OUTER JOIN cust b
  PARTITION BY (b.cno)
    ON a.mm = b.mm
 ORDER BY b.cno, a.mm
;

마농(manon94)님이 2018-01-15 11:35:20에 작성한 댓글입니다.

답변감사드립니다.

 

 

초보입니다.님이 2018-01-15 14:50:04에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41512characterset 다른 2개 서버로 클라이언트에서 접속 문의
개발자
2018-01-16
787
41511월별 주간별 row 구하기입니다. [2]
초보입니다.
2018-01-15
814
41509조건에 따라 데이터 일정 간격으로 update 문의 [1]
rapid
2018-01-13
807
41508임의로 row수 늘이기 [4]
초보입니다.
2018-01-11
868
41507컬럼을 일정 길이만큼 잘라서 구분자를 붙이기 [1]
선이
2018-01-10
767
41506해당 테이블 혹은 모든 테이블에서 자기자신 데이터의 1.5의 바이트가 현재 자신의 컬럼의 바이트 사이즈를 초과하는 컬럼 찾기 [5]
허광민
2018-01-03
820
41505APPEND PARALLEL 사용법
엑스
2017-12-23
905
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.073초, 이곳 서비스는
	PostgreSQL v10.1로 자료를 관리합니다