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 37851 게시물 읽기
No. 37851
Row 생성하기..세번째
작성자
아폴론(apollon)
작성일
2010-08-13 14:49ⓒ
2010-08-13 16:17ⓜ
조회수
3,344

죄송합니다..질문도 제대로 못하네요..

다음과 같은 Table이 있습니다.
table1
clcd    year  mnth  menm      금액          수수료
1010    2010   01   신문    1,000,000       400,000
1010    2010   01   잡지      500,000        50,000
1010    2010   02   신문    1,000,000       400,000
1010    2010   02   잡지      500,000        50,000
1010    2010   03   신문    1,000,000       400,000
1010    2010   03   잡지      500,000        50,000
1020    2010   01   신문    1,000,000       400,000
1020    2010   01   잡지      500,000        50,000
1020    2010   02   신문    1,000,000       400,000
1020    2010   02   잡지      500,000        50,000
1020    2010   03   신문    1,000,000       400,000
1020    2010   03   잡지      500,000        50,000

table2
clcd    year  mnth  menm        금액        수수료
1010    2010   01   CATV      900,000       135,000
1010    2010   02   CATV      900,000       135,000
1010    2010   03   CATV      900,000       135,000

 

이런 Table을 거래처(clcd)별로 아래처럼 나타내려고 합니다.
금액은 Billing이 되고 수수료는 Ravinue 가되고요..
비율은 금액대비 수수료율 입니다.

어제 질문 후 깨비(ggaevi)님이 답변을 해 주시고 나서 지금까지 응용하려고 노력 했는데..ㅎㅎ
실력이 달려서 안되네요..

clcd      kubn      kubn2   kunm      합계          일월      이월         삼월       ...  십이월
1010     billing     01     신문   3,000,000     1,000,000  1,000,000   1,000,000                 0
1010     billing     02     잡지   1,500,000       500,000    500,000     500,000                 0
1010     billing     03      TV            0             0          0           0                 0
1010     billing     04    Radio           0             0          0           0                 0
1010     billing     05     CATV   2,700,000       900,000    900,000     900,000                 0
1010     billing     06     옥외           0             0          0           0                 0
1010     billing     07     제작           0             0          0           0                 0
1010     billing     14     합계   7,200,000     2,400,000  2,400,000   2,400,000                 0
---------------------------------------------------------------------------------------------------
1010     Ravinue     01     신문   1,200,000       400,000    400,000     400,000                 0
1010     Ravinue     02     잡지     150,000        50,000     50,000      50,000                 0
1010     Ravinue     03      TV            0             0          0           0                 0
1010     Ravinue     04    Radio           0             0          0           0                 0
1010     Ravinue     05     CATV     405,000       135,000       135,000    135,000               0
1010     Ravinue     06     옥외           0             0          0           0                 0
1010     Ravinue     06     제작           0             0          0           0                 0
1010     Ravinue     14     합계   1,755,000       585,000    585,000     585,000                 0
---------------------------------------------------------------------------------------------------
1010       비율      01     신문          40            40         40          40                 0
1010       비율      02     잡지          10            10         10          10                 0
1010       비율      03      TV            0             0          0           0                 0
1010       비율      04    Radio           0             0          0           0                 0
1010       비율      05     CATV          15            15         15          15                 0
1010       비율      06     옥외           0             0          0           0                 0
1010       비율      06     제작           0             0          0           0                 0
1010       비율      14     합계          24            24         24          24                 0
===================================================================================================
1020     billing     01     신문   3,000,000     1,000,000  1,000,000   1,000,000                 0
1020     billing     02     잡지   1,500,000       500,000    500,000     500,000                 0
1020     billing     03      TV            0             0          0           0                 0
1020     billing     04    Radio           0             0          0           0                 0
1020     billing     05     CATV           0             0          0           0                 0
1020     billing     06     옥외           0             0          0           0                 0
1020     billing     07     제작           0             0          0           0                 0
1020     billing     14     합계   4,500,000     1,500,000  1,500,000   1,500,000                 0
---------------------------------------------------------------------------------------------------
1020     Ravinue     01     신문   1,200,000       400,000    400,000     400,000                 0
1020     Ravinue     02     잡지     150,000        50,000     50,000      50,000                 0
1020     Ravinue     03      TV            0             0          0           0                 0
1020     Ravinue     04    Radio           0             0          0           0                 0
1020     Ravinue     05     CATV           0             0          0           0                 0
1020     Ravinue     06     옥외           0             0          0           0                 0
1020     Ravinue     06     제작           0             0          0           0                 0
1020     Ravinue     14     합계   1,350,000       450,000    450,000     450,000                 0
---------------------------------------------------------------------------------------------------
1020       비율      01     신문          40            40         40          40                 0
1020       비율      02     잡지          10            10         10          10                 0
1020       비율      03      TV            0             0          0           0                 0
1020       비율      04    Radio           0             0          0           0                 0
1020       비율      05     CATV           0             0          0           0                 0
1020       비율      06     옥외           0             0          0           0                 0
1020       비율      06     제작           0             0          0           0                 0
1020       비율      14     합계          30            30         30          30                 0

구분선은 이화면에서 보기위한 것입니다.

감사합니다.

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

WITH table1 AS
(
SELECT '1010' clcd, '2010' year, '01' mnth, '신문' menm, 1000000 amt, 400000 fee FROM dual
UNION ALL SELECT '1010', '2010', '01', '잡지',  500000,  50000 FROM dual
UNION ALL SELECT '1010', '2010', '02', '신문', 1000000, 400000 FROM dual
UNION ALL SELECT '1010', '2010', '02', '잡지',  500000,  50000 FROM dual
UNION ALL SELECT '1010', '2010', '03', '신문', 1000000, 400000 FROM dual
UNION ALL SELECT '1010', '2010', '03', '잡지',  500000,  50000 FROM dual
UNION ALL SELECT '1020', '2010', '01', '신문', 1000000, 400000 FROM dual
UNION ALL SELECT '1020', '2010', '01', '잡지',  500000,  50000 FROM dual
UNION ALL SELECT '1020', '2010', '02', '신문', 1000000, 400000 FROM dual
UNION ALL SELECT '1020', '2010', '02', '잡지',  500000,  50000 FROM dual
UNION ALL SELECT '1020', '2010', '03', '신문', 1000000, 400000 FROM dual
UNION ALL SELECT '1020', '2010', '03', '잡지',  500000,  50000 FROM dual
)
, table2 AS
(
SELECT '1010' clcd, '2010' year, '01' mnth, 'CATV' menm, 900000 amt, 135000 fee FROM dual
UNION ALL SELECT '1010', '2010', '02', 'CATV',  900000, 135000 FROM dual
UNION ALL SELECT '1010', '2010', '03', 'CATV',  900000, 135000 FROM dual
)
, table3 AS
(
SELECT clcd, year, mnth, menm, amt, fee FROM table1
 UNION ALL
SELECT clcd, year, mnth, menm, amt, fee FROM table2
)
, code0 AS
(
SELECT DISTINCT clcd FROM table3 WHERE year = '2010'
)
, code1 AS
(
SELECT '01' kubn2, '신문' kunm FROM dual
UNION ALL SELECT '02', '잡지'  FROM dual
UNION ALL SELECT '03', 'TV'    FROM dual
UNION ALL SELECT '04', 'Radio' FROM dual
UNION ALL SELECT '05', 'CATV'  FROM dual
UNION ALL SELECT '06', '옥외'  FROM dual
UNION ALL SELECT '07', '제작'  FROM dual
)
SELECT clcd
     , DECODE(GROUP_ID(),0,'billing',1,'Ravinue',2,'비율') kubn
     , kubn2
     , kunm
     , DECODE(GROUP_ID(),0,MIN(DECODE(mnth,'01',amt))
                        ,1,MIN(DECODE(mnth,'01',fee))
                        ,2,MIN(DECODE(mnth,'01',rat)) ) m01
     , DECODE(GROUP_ID(),0,MIN(DECODE(mnth,'02',amt))
                        ,1,MIN(DECODE(mnth,'02',fee))
                        ,2,MIN(DECODE(mnth,'02',rat)) ) m02
     , DECODE(GROUP_ID(),0,MIN(DECODE(mnth,'03',amt))
                        ,1,MIN(DECODE(mnth,'03',fee))
                        ,2,MIN(DECODE(mnth,'03',rat)) ) m03
     , DECODE(GROUP_ID(),0,SUM(amt)
                        ,1,SUM(fee)
                        ,2,ROUND(SUM(fee)/SUM(amt)*100,2) ) m_tot
  FROM (
        SELECT c0.clcd
             , NVL(c1.kubn2, '14') kubn2
             , NVL(c1.kunm, '합계') kunm
             , mnth
             , SUM(amt) amt
             , SUM(fee) fee
             , ROUND(SUM(fee) / SUM(amt) * 100, 2) rat
          FROM code0 c0
         CROSS JOIN code1 c1
          LEFT JOIN (SELECT clcd, mnth, menm, amt, fee
                       FROM table3
                      WHERE year = '2010'
                     ) a
            ON c0.clcd = a.clcd
           AND c1.kunm = a.menm
         GROUP BY c0.clcd, a.mnth, ROLLUP((c1.kubn2, c1.kunm))
        )
 GROUP BY clcd, kubn2, kunm, ROLLUP(clcd, clcd)
 ORDER BY clcd, GROUP_ID(), kubn2
;

마농(manon94)님이 2010-08-13 16:51에 작성한 댓글입니다.
이 댓글은 2010-08-13 17:05에 마지막으로 수정되었습니다.

놀랍습니다..

쿼리가..안되는것이 없나 봅니다.

이틀을 끙끙대고 있는데.... 

umpro@lycos.co.kr) 네이트온 신청해 주시면 점심한번 사겠습니다..

참고로 저는 서울 신사동 입니다만..서울이면 제가 가지요...

아폴론(apollon)님이 2010-08-13 16:59에 작성한 댓글입니다.

오류가 있어 수정했습니다. 다시 확인 바랍니다.

마농(manon94)님이 2010-08-13 17:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
37856SERVICE_NAME에 Database 명을 입력하면 되나요?
용세중
2010-08-16
2577
37855쿼리질문...세로데이타..가로로나타내기... [2]
김옥희
2010-08-16
3843
3785411g 인데 trc 파일이 무지하게 떨어 집니다. 도와주세요.
박철
2010-08-14
3386
37851Row 생성하기..세번째 [3]
아폴론
2010-08-13
3344
37850Row 생성하기..한번더요.. [3]
아폴론
2010-08-13
2740
37849[질문] DB Link Table 에 Merge 문 사용이 Error 가 발생하네요... [3]
황동연
2010-08-13
5873
37847CONNECT BY 질문입니다. [2]
안동석
2010-08-12
3119
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다