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 41055 게시물 읽기
No. 41055
쿼리좀 알려주세요...
작성자
피어스
작성일
2016-01-20 12:52
조회수
8,144

SELECT

I.ACNTCTGR_CD

, DECODE(J.DBCR_SE_CD, '1', I.DR_AMT - I.CR_AMT

, '2', I.CR_AMT - I.DR_AMT

, 0 ) AS AMT

FROM (

SELECT

B.ACNTCTGR_CD

, SUM(DECODE(DC_DIV,'1',NVL(B.DEBIT_AMT,0),0)) AS DR_AMT

, SUM(DECODE(DC_DIV,'2',NVL(B.CREDIT_AMT,0),0)) AS CR_AMT

FROM TB_FSM100 A

, TB_FSM101 B

WHERE A.ACC_UNIT_CD LIKE '1000'

AND A.EPN_DT BETWEEN '201401'||'01' AND '201412'||'31'

AND A.USE_YN = 'Y'

AND A.APVL_STAT = '51'

AND A.CHIT_NO = B.CHIT_NO

AND B.USE_YN = 'Y'

AND A.CHIT_DIV = '3'

-->요기부터

AND CASE WHEN SUBSTR(A.EPN_DT,5,2) = '12' AND A.CHIT_TYPE IN ('11','14') THEN '1'

WHEN SUBSTR(A.EPN_DT,5,2) <> '12' AND A.CHIT_TYPE IN ('11','12','14') THEN '1'

ELSE '0'END = '1'

-->여기까지

 

GROUP BY B.ACNTCTGR_CD

) I

, TB_FSC010 J

WHERE I.ACNTCTGR_CD = J.ACNTCTGR_CD

 

 

 

위 쿼리에서 요기부터라는 부분의 AND절을 B.ACNTCTGR_CD = '000000' 값인경우는

WHERE절에서 AND절을 안타고 그외인경우만 AND절을 태우고 싶은데.. .쿼리가 안되는데요..

도와주세요...

 

 

 

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

SELECT i.acntctgr_cd
     , DECODE(j.dbcr_se_cd, '1', 1, '2', -1, 0)
       * (i.dr_amt - i.cr_amt) AS amt
  FROM (SELECT b.acntctgr_cd
             , NVL(SUM(DECODE(dc_div, '1', b.debit_amt )), 0) AS dr_amt
             , NVL(SUM(DECODE(dc_div, '2', b.credit_amt)), 0) AS cr_amt
          FROM tb_fsm100 a
             , tb_fsm101 b
         WHERE a.chit_no   = b.chit_no
           AND a.acc_unit_cd LIKE '1000'
           AND a.epn_dt    BETWEEN '201401'||'01' AND '201412'||'31'
           AND a.apvl_stat = '51'
           AND a.chit_div  = '3'
           AND a.use_yn    = 'Y'
           AND b.use_yn    = 'Y'
           -->요기부터
           AND CASE WHEN b.acntctgr_cd = '000000' THEN 1
                    WHEN SUBSTR(a.epn_dt,5,2)  = '12'
                     AND a.chit_type IN ('11','14')      THEN 1
                    WHEN SUBSTR(a.epn_dt,5,2) <> '12'
                     AND a.chit_type IN ('11','12','14') THEN 1
                END = 1
           -->여기까지
         GROUP BY b.acntctgr_cd
        ) i
     , tb_fsc010 j
 WHERE i.acntctgr_cd = j.acntctgr_cd
;

마농(manon94)님이 2016-01-20 14:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41058데이터 삭제시 속도 문제 문의 [2]
이성근
2016-01-22
8178
41057쿼리해석 부탁합니다 [1]
바랑
2016-01-21
9026
41056ROW를 합치고 싶습니다. [2]
저격왕
2016-01-21
8562
41055쿼리좀 알려주세요... [1]
피어스
2016-01-20
8144
41054쿼리 도움이요..쉬운듯 한데 안되네요. [3]
gome
2016-01-20
8307
41053회의실 예약 DB Layout 문의 [2]
IT재벌
2016-01-18
8215
41052pl/sql 여러 테이블에 여러 칼럼 지우고 싶습니다. [2]
조윤상
2016-01-18
8149
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다