제가 쿼리문 하나를 짰는데 지금 sap이 없어서 확인을 못하네요.
왠지 틀린것 같은데 쫌 확인쫌 해주세요
50t와 51t를 조인해서 그중에서 num이 가장 큰놈을 가져오고싶은데요 아래 체크부분이 맘에 걸리네요
그리고 조인하면서 그룹바이하면서 max를 사용할수가 있는건가요?
괜히 조인 들어가면 작아지는 저입니다.ㅜ,ㅜ
SELECT 50T~KUNNR
50T~MATNR
51T~SEQNR
50T~NUM
50T~INNUM
51T~INDAT
51T~MATXT
INTO CORRESPONDING FIELDS OF TABLE ITAB_2
FROM ZKS50T AS 50T INNER JOIN ZKS51T AS 51T
ON 50T~KUNNR = 51T~KUNNR AND
50T~MATNR = 51T~MATNR AND
50T~NUM = 51T~NUM
WHERE 50T~KUNNR IN S_KUNNR AND
50T~DEL <> 'X' AND
50T~INNUM <> ' '
50t~num = ( select max( num)
from zks50t
where kunnr IN s_kunnr <- 요 부분이 맘에 걸리네요
and 50t~del <> 'X'
and 50~innum <> ' '
)
댓글 4
-
MadMax
2009.10.26 23:50
-
MadMax
2009.10.26 23:50
헉.. 아래 서브쿼리중 max(num) 은 max(50tt~num) 으로...
-
아밥고지를 찾아서
2009.10.27 01:50
MadMax님 답변 감사드립니다.
그런데 제가 테스트는 못해봤지만 저렇게 되면 50t~kunnr 의 값이 s_kunnr안에 있는 값이 맞나요?
순서가 어떻게 되죠
제가 알기로는
1. 서브쿼리
2. on
3. where 절 이런 순으로 알고 있는데
서브쿼리를 실행시 50t~kunnr 의 값이
50t~kunnr = 51t~kunnr 된것에 나오는것인가요?
on 조건이 먼저 실행된다면 문제가 없을것 같은데요 확신이 안서네요 50t와 51t에서 조인된 값 중에서 num이 가장 큰값을 가져와야 하거든요
조금 더 부탁 드립니다.
-
아~밥퍼...
2009.10.27 03:10
50T 와 51T 가 1:n 의 관계라면 MadMax 님의 설명이 맞는거 같구요...
1:1 이라면 서브쿼리가 필요가 없겠죠...
근데 1:n 의 경우 쿼리의 부하가 있을수 있을거 같구요...
50t 에서 Max 값을 읽는 쿼리와 나머지 쿼리를 분리해서 Loop 나 Read table 로 하시는 것도 좋을듯 합니다.
이것을..
( select max( num)
from zks50t
where kunnr IN s_kunnr <- 요 부분이 맘에 걸리네요
and 50t~del <> 'X'
and 50~innum <> ' '
)
이렇게 바꿔보시죠..
( select max( num)
from zks50t as 50tt
where 50tt~kunnr = 50t~kunnr <- 요 부분이 맘에 걸리네요
and 50tt~del <> 'X'
and 50tt~innum <> ' '
)