Q&A

  • 아직 왕초보라서 정말 무지막지하게 힘들군요 ㅠ.ㅠ
수고하십니다 고수님덜 급한건데요,

아직 왕초보라서 정말 무지막지하게 힘들군요 ㅠ.ㅠ

꼭 답변 부탁 드립니다.



테이블: cost

primary: c_date, c_yy, c_seq, c_code (내개 합쳐서..)



(적용일자) (매출처) (매출처seq) (상품코드) (단가)

c_date c_yy c_seq c_code c_price

2001-01-03 01 001 111 1000

2001-01-04 01 001 111 2000

2001-01-05 01 001 111 3000

2001-01-07 01 002 222 500

2001-01-08 01 002 222 600

2001-01-09 01 002 222 700

2001-01-11 01 002 111 10

2001-01-12 01 002 111 20

2001-01-13 01 002 111 30



위와같은 테이블에서

단가,상품코드,매출처 를 select 해야 되는데요

시퀀스,상품코드를 그룹으로 가장 최근날짜의 레코드들만 select 해야 됩니다.





그러니까 위에꺼중에



(적용일자) (매출처) (매출처seq) (상품코드) (단가)

2001-01-05 01 001 111 3000

2001-01-09 01 002 222 700

2001-01-13 01 002 111 30



이렇게 뽑아져야 하는데 정말 어렵습니다.

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



4  COMMENTS
  • Profile
    danger 2001.03.28 01:30
    이럴땐

    인라인 뷰를 사용하세용...

    아래의 예처럼 하심 가늘할껄용..

    join은 key 순으로 하시고용...(index를 잘 활용하심 속도는

    무지하게 빨라지겠쭁)



    select a.* from temp_cost a,

    (select max(c_date) c_date, c_seq, c_code from temp_cost

    group by c_seq,c_code) b

    where a.c_date = b.c_date

    and a.c_seq = b.c_seq

    and a.c_code = b.c_code



    --- 수거용.. 존하루 되고 돔이 됐음조
  • Profile
    쭈꾸미 2001.03.28 21:24
    ^^ 아이구 이거 정말 고맙습니다.

    돔이 되다 마다요...



    감사 합니다.

  • Profile
    쭉쭉빵빵 2001.03.27 13:29
    옛날 오라클에서는



    최근 data table를 만들어서 'cost_new'라고 가정하고



    field는 c_date, c_seq, c_code 로 하고



    cost에 입력 또는 삭제시 트리거를 발생시켜서



    cost_new에는 최근의 Data만 입력하는 방식입니다.



    쩝 이거 대답이 되었는지 모르겠네요.





    쭈꾸미 wrote:

    > 수고하십니다 고수님덜 급한건데요,

    > 아직 왕초보라서 정말 무지막지하게 힘들군요 ㅠ.ㅠ

    > 꼭 답변 부탁 드립니다.

    >

    > 테이블: cost

    > primary: c_date, c_yy, c_seq, c_code (내개 합쳐서..)

    >

    > (적용일자) (매출처) (매출처seq) (상품코드) (단가)

    > c_date c_yy c_seq c_code c_price

    > 2001-01-03 01 001 111 1000

    > 2001-01-04 01 001 111 2000

    > 2001-01-05 01 001 111 3000

    > 2001-01-07 01 002 222 500

    > 2001-01-08 01 002 222 600

    > 2001-01-09 01 002 222 700

    > 2001-01-11 01 002 111 10

    > 2001-01-12 01 002 111 20

    > 2001-01-13 01 002 111 30

    >

    > 위와같은 테이블에서

    > 단가,상품코드,매출처 를 select 해야 되는데요

    > 시퀀스,상품코드를 그룹으로 가장 최근날짜의 레코드들만 select 해야 됩니다.

    >

    >

    > 그러니까 위에꺼중에

    >

    > (적용일자) (매출처) (매출처seq) (상품코드) (단가)

    > 2001-01-05 01 001 111 3000

    > 2001-01-09 01 002 222 700

    > 2001-01-13 01 002 111 30

    >

    > 이렇게 뽑아져야 하는데 정말 어렵습니다.

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

    >

  • Profile
    쭉쭉빵빵 2001.03.27 12:59
    힘든 문제 입니다.



    요즘은 어떻게 하는지를 잘모르겠네요.



    일단 제가 했던 방법을 적겠어요.



    3년동안 DB를 안해서 쿼리가 맞는지는 잘모르겠지만



    c_date가 숫자일경우 입니다.



    옛날에 저의 회사는 날짜는 숫자로 했어요



    여러가지 운용상 숫자로 하는것이 가장 좋아서..



    이것은 인포믹스의 방법입니다.



    3년전에는 오라클은 지원 안했던 방법인데 지금은



    지원할거에요.



    그리고 2-tiear 에서만 됩니다.



    Select c_seq seq, c_code code , Max(c_date) date from

    from cost

    group by c_seq, c_code code

    into temp ?????????;





    Create index .... // -_- 인덱스 만드는 방법을 잊어네요.

    // 하여간 ????????? 테이블에 인덱스

    를 만드는 게 좋을거에요.



    selectr A.* from cost A, ????????? B

    where A.seq = B.seq

    And A.date = B.date

    And A.code = B.code



    그리고 옛날 오라클은 Stored procedure를