누리몬
누리누리한세상
누리몬
전체 방문자
오늘
어제
  • 분류 전체보기 (108)
    • 웹 (28)
      • JSP (2)
      • JAVASCRIPT (2)
      • JQUERY (18)
      • SALESFORCE (5)
    • 언어 (54)
      • JAVA (34)
      • DB (16)
      • Angular2 (0)
      • AEM (4)
    • 일상이야기 (5)
      • 푸드스토리 (1)
      • 누리스토리 (0)
      • 잡다한이야기 (1)
      • 인생사 (0)
    • 환경세팅 (10)
    • 리눅스 (6)
    • 기타잡템 (3)
    • 회사 (2)
      • 기록 (0)
      • 산업기사공부 (2)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자

공지사항

인기 글

태그

  • PLSQL
  • 누리
  • 프로시저
  • calendar
  • 테이블코멘트확인
  • log4j보안취약
  • 리눅스
  • jquery
  • 부산여행
  • 강아지
  • Zflip3
  • java
  • web.xml 오류
  • Oracle
  • 리눅스명령어
  • 둠 이스케이프
  • 국내방탈출
  • 공포 방탈출
  • 애견동방가능펜션
  • log4j권고사항

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
누리몬

누리누리한세상

언어/DB

20141230 DB

2014. 12. 30. 14:31

select 

a.*,b.*

from

(

  select 10 as ordno from dual 

  union all

  select 20 as ordno from dual 

  union all

  select 30 as ordno from dual 

) a,

(

  select

    a.ordno,a.seq,

      (case a.seq when 

        (

          select

          min(b.seq)

          from

            (

              select 10 as ordno, 2 as seq, 1000 as price from dual

              union all

              select 10 as ordno, 5 as seq, 3000 as price from dual

              union all

              select 10 as ordno, 3 as seq, 2000 as price from dual

            )b

        )

        

      then a.price||''

      else '' 

      end

      ) as price

    from

    (

      select 10 as ordno, 2 as seq, 1000 as price from dual

      union all

      select 10 as ordno, 5 as seq, 3000 as price from dual

      union all

      select 10 as ordno, 3 as seq, 2000 as price from dual

    )a

) b

where a.ordno = b.ordno 

;





select

a.ordno,a.seq,

  (case a.seq 

  when 

    (

      select

      min(b.seq)

      from

        (

          select 10 as ordno, 2 as seq, 1000 as price from dual

          union all

          select 10 as ordno, 5 as seq, 3000 as price from dual

          union all

          select 10 as ordno, 3 as seq, 2000 as price from dual

        )b

    )   

  then a.price||''

 -- else '' 

  end

  ) as price

from

(

  select 10 as ordno, 2 as seq, 1000 as price from dual

  union all

  select 10 as ordno, 5 as seq, 3000 as price from dual

  union all

  select 10 as ordno, 3 as seq, 2000 as price from dual

)a

;



--####################################

-- seq 가 적은곳에 가격)


select

a.ordno,a.seq,

  decode(a.seq,

        (

          select

            min(b.seq)

          from

            (

              select 10 as ordno, 2 as seq, 1000 as price from dual

              union all

              select 10 as ordno, 5 as seq, 3000 as price from dual

              union all

              select 10 as ordno, 3 as seq, 2000 as price from dual

              union all

              select 20 as ordno, 10 as seq, 1000 as price from dual

              union all

              select 20 as ordno, 12 as seq, 3000 as price from dual

              union all

              select 20 as ordno, 3 as seq, 2000 as price from dual

            )b

            WHERE

            b.ordno = a.ordno

        )

        ,

        a.price

        ,''

        

        

  ) as price

from

(

   select 10 as ordno, 2 as seq, 1000 as price from dual

    union all

    select 10 as ordno, 5 as seq, 3000 as price from dual

    union all

    select 10 as ordno, 3 as seq, 2000 as price from dual

    union all

    select 20 as ordno, 10 as seq, 1000 as price from dual

    union all

    select 20 as ordno, 12 as seq, 3000 as price from dual

    union all

    select 20 as ordno, 3 as seq, 2000 as price from dual

)a

;




--#######################################################################

-- 이전행 다음행 비교 


select -- A.con1 as Acon1,a.price as APrice , A.ordno as Aordno, 

       B.con1, B.ordno , B.seq ,A.ordno as AAA,B.ordno as BBB, decode( A.ordno,  B.ordno ,'',B.price)as price --, ,B.con2

      

from 

          (

                select ROWNUM as con1, ordno, seq, price

                  --decode(a.p

                from 

                  (

                    select 10 as ordno, 2 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 5 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 3 as seq, 1000 as price from dual

                    union all

                    select 20 as ordno, 10 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 12 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 3 as seq, 3000 as price from dual

                  )

                

                )A , 

              (

                  select ROWNUM as con1, ordno, seq,price, ROWNUM-1 as con2

                  --decode(a.p

                from 

                  (

                    select 10 as ordno, 2 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 5 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 3 as seq, 1000 as price from dual

                    union all

                    select 20 as ordno, 10 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 12 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 3 as seq, 3000 as price from dual

                  )

                

              )B

where A.con1(+) = B.con2

order by con1

;





--###############################################################

--LAG 함수이용 



            select

            ordno

            , seq

            ,price

            ,LAG(ordno) OVER(order by ordno) as ordno2 

            ,decode(ordno,LAG(ordno)OVER(order by ordno) ,'',price)as price2 

            

            from

                  (

                    select 10 as ordno, 2 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 5 as seq, 1000 as price from dual

                    union all

                    select 10 as ordno, 3 as seq, 1000 as price from dual

                    union all

                    select 20 as ordno, 10 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 12 as seq, 3000 as price from dual

                    union all

                    select 20 as ordno, 3 as seq, 3000 as price from dual

                  )

          ;


--##################################################

--# 이전번호 다음번호 현재번호 조회 

-- DB 다음행 , 이전행 현재행 값 조회

#

LAG(컬럼) OVER ( order by 컬럼) 이전 컬럼의값,

LEAD(컬럼) OBER (order by 컬럼) 다음 컬럼의 값


select 

  LAG(ordno) over (order by ordno) 이전주문번호,

  ordno 주문번호,

  LEAD(ordno) OVER (order by ordno) 다음주문번호

FROM 

  (

      select 10 as ordno from dual

      union all               

      select 10 as ordno from dual

      union all               

      select 10 as ordno from dual

      union all               

      select 20 as ordno  from dual

      union all               

      select 20 as ordno  from dual

      union all               

      select 20 as ordno from dual

  )

  ;



'언어 > DB' 카테고리의 다른 글

[PLSQL]  (0) 2015.03.10
[DB] 문법  (0) 2015.03.09
[프로시저]  (0) 2015.02.24
[DB] 시노님  (0) 2015.01.01
20140530 [SQL]  (0) 2014.12.22
    '언어/DB' 카테고리의 다른 글
    • [DB] 문법
    • [프로시저]
    • [DB] 시노님
    • 20140530 [SQL]
    누리몬
    누리몬
    안녕하세요 누리누리한세상 블로그입니다 문의사항은 hjdhsmf@gmail.com 으로 메일주세요.

    티스토리툴바