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 39823 게시물 읽기
No. 39823
쿼리문의드립니다.
작성자
슈펭(jjy)
작성일
2012-11-29 01:34
조회수
6,619

 

올해기준년으로 그해년도데이타값이 있는지여부를 판단합니다.

(최대 5년치 10년치로 표현합니다.)

해당년도의 데이타가 있을경우 '1' 없을경우 '0'

 

--결과값--

           2004        2005       20009      2010    2011       2012

상품1     0              0               0            1          0             1

상품2     0              1               1             0          0             0

 

 년도는 올해기준으로 최대 과거5년치나 과거10년치로 보여주어야합니다.

2004년도의 데이타가 없어도 기본컬럼정보는표출되어야합니다.

 

고수님들 답변 부탁드립니다.

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

SELECT item
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-9, 1)), 0) yyyy_9
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-8, 1)), 0) yyyy_8
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-7, 1)), 0) yyyy_7
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-6, 1)), 0) yyyy_6
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-5, 1)), 0) yyyy_5
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-4, 1)), 0) yyyy_4
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-3, 1)), 0) yyyy_3
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-2, 1)), 0) yyyy_2
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')-1, 1)), 0) yyyy_1
     , NVL(MIN(DECODE(yyyy, TO_CHAR(sysdate, 'yyyy')  , 1)), 0) yyyy_0
  FROM (SELECT DISTINCT item, yyyy
          FROM t
         WHERE yyyy >= TO_CHAR(TO_CHAR(sysdate, 'yyyy') - 9)
           AND yyyy <= TO_CHAR(sysdate, 'yyyy')
        )
 GROUP BY item
;

마농(manon94)님이 2012-11-29 09:03에 작성한 댓글입니다.

 

SELECT B.YYYY,A.ITEM,      
       NVL(SUM(A.QTY),0) QTY
FROM (
    SELECT '2012' YYYY, 'A' ITEM, 1 AS QTY FROM DUAL
    UNION ALL
    SELECT '2010' YYYY, 'B' ITEM, 3 AS QTY FROM DUAL
    UNION ALL
    SELECT '2011' YYYY, 'B' ITEM, 2 AS QTY FROM DUAL
    ) A,
  (   
  select TO_CHAR(SYSDATE,'YYYY')+1 - lv AS YYYY
  from (select level lv
          from dual
          connect by level <= 10)
  )  B
WHERE 1=1
AND B.YYYY = A.YYYY(+)
GROUP BY B.YYYY,A.ITEM    
;    

나상숙(kduimux)님이 2012-11-29 12:56에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39829connect by 질문 [2]
최인수
2012-12-03
7339
39825범위비교 쿼리 질문드립니다. [1]
김완경
2012-11-29
6322
39824조언부탁드립니다. [1]
부족한타블로
2012-11-29
6172
39823쿼리문의드립니다. [2]
슈펭
2012-11-29
6619
39822SQL 초고수에게 묻고싶습니다. [2]
나상숙
2012-11-28
6431
39819IN 쿼리가 잘안되는데요..ㅠㅠ [2]
초보
2012-11-28
5983
39818계층구조 sum 질문 [1]
함승우
2012-11-28
6636
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다