Q&A

  • 데이터 쿼리 질문


하여 고수님들 안뇽 하신가여 쿼리 질문좀 할라구 함당..^^





Partno Revno Lastupdate

123456 1.1 00-08-01

123456 1.0 00-05-03

654321 1.1 99-01-05

654321 1.2 99-06-07

456789 1.0 89-10-21

456789 1.1 98-10-21

456789 1.2 00-12-01



간단한거 같은디 암만 해두 생각이 안나네여 ㅠㅠ



위의 테이블명은 workitem임다...

위의 테이블에서 중복제걸 할려구 합니다.. 그러니까 위에 있는 것중에서 Lastupdate가

높은 품번만 나오게 할려구 합니다. 어떻게 해야 하죠?

그러니까 select distinct * from workitem where ????

where 절을 어떻게 해야 할까여??? 아시는 고수님들 답글 부탁 합니다...^^

그럼 이만.. 추운날 몸조심 하이소 ^^



7  COMMENTS
  • Profile
    방경주 2000.12.01 22:14
    Select *

    from workitem a

    where a.Lastupdate = (Select Max(Lastupdate)

    from workitem b

    where b.Lastupdate = a.Lastupdate )

    이렇게 하는게 아닐까여?



    함 해보세여...안되면...음...어쩌지? ㅡㅡ;;



    허접이 방입니다요~ ^^



    사발우성 wrote:

    >

    > 하여 고수님들 안뇽 하신가여 쿼리 질문좀 할라구 함당..^^

    >

    >

    > Partno Revno Lastupdate

    > 123456 1.1 00-08-01

    > 123456 1.0 00-05-03

    > 654321 1.1 99-01-05

    > 654321 1.2 99-06-07

    > 456789 1.0 89-10-21

    > 456789 1.1 98-10-21

    > 456789 1.2 00-12-01

    >

    > 간단한거 같은디 암만 해두 생각이 안나네여 ㅠㅠ

    >

    > 위의 테이블명은 workitem임다...

    > 위의 테이블에서 중복제걸 할려구 합니다.. 그러니까 위에 있는 것중에서 Lastupdate가

    > 높은 품번만 나오게 할려구 합니다. 어떻게 해야 하죠?

    > 그러니까 select distinct * from workitem where ????

    > where 절을 어떻게 해야 할까여??? 아시는 고수님들 답글 부탁 합니다...^^

    > 그럼 이만.. 추운날 몸조심 하이소 ^^

    >

  • Profile
    사발우성 2000.12.01 23:47
    어떻게 해야하는지 아시는 고수님들은 답글좀 달아 주시와여 ㅠㅠ

    겨우 수정했는디.... 이상한 것땜시 환장 하겠네여 ㅠㅠ

    > >

    > > Partno Revno Lastupdate

    > > 123456 1.1 00-08-01

    > > 123456 1.0 00-05-03

    > > 654321 1.1 99-01-05

    > > 654321 1.2 99-06-07

    > > 456789 1.0 89-10-21

    > > 456789 1.1 98-10-21

    > > 456789 1.2 00-12-01

    > >

    > > 간단한거 같은디 암만 해두 생각이 안나네여 ㅠㅠ

    > >

    > > 위의 테이블명은 workitem임다...

    > > 위의 테이블에서 중복제걸 할려구 합니다.. 그러니까 위에 있는 것중에서 Lastupdate가

    > > 높은 품번만 나오게 할려구 합니다. 어떻게 해야 하죠?

    > > 그러니까 select distinct * from workitem where ????

    > > where 절을 어떻게 해야 할까여??? 아시는 고수님들 답글 부탁 합니다...^^

    > > 그럼 이만.. 추운날 몸조심 하이소 ^^

    > >

  • Profile
    데빠이 2000.12.01 19:32
    사발우성 wrote:

    >

    > 하여 고수님들 안뇽 하신가여 쿼리 질문좀 할라구 함당..^^

    >

    >

    > Partno Revno Lastupdate

    > 123456 1.1 00-08-01

    > 123456 1.0 00-05-03

    > 654321 1.1 99-01-05

    > 654321 1.2 99-06-07

    > 456789 1.0 89-10-21

    > 456789 1.1 98-10-21

    > 456789 1.2 00-12-01

    >

    > 간단한거 같은디 암만 해두 생각이 안나네여 ㅠㅠ

    >

    > 위의 테이블명은 workitem임다...

    > 위의 테이블에서 중복제걸 할려구 합니다.. 그러니까 위에 있는 것중에서 Lastupdate가

    > 높은 품번만 나오게 할려구 합니다. 어떻게 해야 하죠?

    > 그러니까 select distinct * from workitem where ????

    > where 절을 어떻게 해야 할까여??? 아시는 고수님들 답글 부탁 합니다...^^

    > 그럼 이만.. 추운날 몸조심 하이소 ^^

    >



    SELECT A, B FROM workitem A

    WHERE  ROWID > ( SELECT MIN(ROWID) FROM workitem B

               WHERE A.A = B.A

                AND A.B = B.B );



    이걸 응용해보시면 될겁니다. 그럼...

  • Profile
    사발우성 2000.12.01 20:02




    > >



    Partno Revno Lastupdate uom Descript

    123456 1.1 00-08-01 EA AAAAAA+AA

    123456 1.0 00-05-03 EA AAAAAA

    654321 1.1 99-01-05 EA BBBBBB

    654321 1.2 99-06-07 EA BBBBBBBBBBB

    456789 1.0 89-10-21 EA CCCC

    456789 1.1 98-10-21 EA CCCCCCCC

    456789 1.2 00-12-01 EA CCCCCCCCCCCC



    SELECT A, B FROM workitem A

    WHERE  ROWID > ( SELECT MIN(ROWID) FROM workitem B

               WHERE A.A = B.A

                AND A.B = B.B );



    위의 테이블로 한다면 어떻게 할수 있을까여?



    Select partno,uom,descript from workitem

    where ????? 어떻게 구현해야하는쥐 ㅠㅠ 제가 무식혀서리 죄성함당..ㅠㅠ

  • Profile
    mafioso 2000.12.02 03:26
    다른 조건이 없다면

    1. 조인을 이용

    select partno, revno, lastupdate, uom, descript

    from workitem a

    inner join

    (select partno, lastupdate = max(lastupdate)

    from workitem

    group by partno) b

    on a.partno = b.partno

    and a.lastupdate = b.lastupdate



    2. having 이용

    select partno, min(revno), max(lastupdate), min(uom), min(descript)

    from workitem

    group by partno

    having lastupdate = max(lastupdate)

    *** 주의 : lastupdate는 max 이고 다른 필드는 min 이다.

    lastupdate의 max 는 실제로 가장 큰값을 가지는 것을 찾는 것이고

    다른 필드의 min은 group by 때문에 써주는것이다.

    물론 max를 써도 같은 결과가 나오지만 min함수가 처리가 빠르다고한다.





    사발우성 wrote:

    >

    >

    > > >

    >

    > Partno Revno Lastupdate uom Descript

    > 123456 1.1 00-08-01 EA AAAAAA+AA

    > 123456 1.0 00-05-03 EA AAAAAA

    > 654321 1.1 99-01-05 EA BBBBBB

    > 654321 1.2 99-06-07 EA BBBBBBBBBBB

    > 456789 1.0 89-10-21 EA CCCC

    > 456789 1.1 98-10-21 EA CCCCCCCC

    > 456789 1.2 00-12-01 EA CCCCCCCCCCCC

    >

    > SELECT A, B FROM workitem A

    > WHERE  ROWID > ( SELECT MIN(ROWID) FROM workitem B

    >            WHERE A.A = B.A

    >             AND A.B = B.B );

    >

    > 위의 테이블로 한다면 어떻게 할수 있을까여?

    >

    > Select partno,uom,descript from workitem

    > where ????? 어떻게 구현해야하는쥐 ㅠㅠ 제가 무식혀서리 죄성함당..ㅠㅠ

  • Profile
    사발우성 2000.12.02 04:22
    답변 감솨여 ^^

  • Profile
    데빠이 2000.12.01 19:32
    사발우성 wrote:

    >

    > 하여 고수님들 안뇽 하신가여 쿼리 질문좀 할라구 함당..^^

    >

    >

    > Partno Revno Lastupdate

    > 123456 1.1 00-08-01

    > 123456 1.0 00-05-03

    > 654321 1.1 99-01-05

    > 654321 1.2 99-06-07

    > 456789 1.0 89-10-21

    > 456789 1.1 98-10-21

    > 456789 1.2 00-12-01

    >

    > 간단한거 같은디 암만 해두 생각이 안나네여 ㅠㅠ

    >

    > 위의 테이블명은 workitem임다...

    > 위의 테이블에서 중복제걸 할려구 합니다.. 그러니까 위에 있는 것중에서 Lastupdate가

    > 높은 품번만 나오게 할려구 합니다. 어떻게 해야 하죠?

    > 그러니까 select distinct * from workitem where ????

    > where 절을 어떻게 해야 할까여??? 아시는 고수님들 답글 부탁 합니다...^^

    > 그럼 이만.. 추운날 몸조심 하이소 ^^

    >



    SELECT A, B FROM workitem A

    WHERE  ROWID > ( SELECT MIN(ROWID) FROM workitem B

               WHERE A.A = B.A

                AND A.B = B.B );



    이걸 응용해보시면 될겁니다. 그럼...