2014-05-09 1 views
0

특정 열의 최대 값을 갖는 (부분) 키를 사용하여 테이블에서 행을 선택하는 것이 SQL의 일반적인 작업입니다. This question에는 다양한 접근법을 다루는 훌륭한 답변이 있습니다. 불행히도 저는 ABAP 프로그램에서이를 복제하기 위해 애 쓰고 있습니다. 내가 아는 한 복합 키 IN 사용 SELECT * FROM X as x INNER JOIN (SELECT ...) AS y Open SQL에서 그룹당 가장 큰 N

  • 는 지금까지 구문에서 지원되지 않습니다 :

    • 하위 쿼리에 가입하는 not supported in syntax입니다 : 일반적으로 사용되는 방법의

      없음 지원하기 위해 보이지 않는다 SELECT * FROM X WHERE (key1, key2) IN (SELECT key1 key2 FROM ...)

    • 왼쪽 작은-보다 비교가 지원되지 않는 외부 조인 만 지원 EQ 비교 자체에 조인 SELECT * FROM X AS x LEFT JOIN X as xmax ON x-key1 = xmax-key1 AND x-key2 < xmax-key2 WHERE xmax-key IS INITIAL

    이들 각각의 솔루션을 차례대로 시도한 후에 ABAP가 지원하지 않는 것으로 나타 났으며 이에 상응하는 항목을 찾을 수 없다는 것을 알았습니다. 하위 쿼리의 데이터를 덤프 할 수밖에 없을 것이라고 생각하기 시작했습니다. itab.

    ABAP 개발에서 일반적인 프로그래밍 요구 사항에 가장 적합한 방법은 무엇입니까?

  • +0

    사용할 수있는 키의 첫 번째 부분에 대한 참조 테이블이 있습니까? – vwegert

    +0

    @vwegert 복합 키를 구조 안에 캡슐화해야한다는 의미입니까? 가치 열의 통화를 명확히하기 위해 사용되는 참조 테이블 만 보았습니다. – Lilienthal

    답변

    0

    귀하의 질문에 대한 답변을 찾으십시오. SELECT * FROM X as x INNER JOIN (SELECT ...) AS y

    조건이 일을해야하는 위치 복합 키 IN 사용 SELECT * FROM X AS x INNER JOIN Y AS y ON x~a = y~b WHERE (SELECT * FROM y WHERE ...)

  • 구문에서 지원되지 않습니다 귀하의 하위 쿼리를 퍼팅 : 하위 쿼리에 가입

    • 구문에서 지원되지 않습니다 지금까지 내가 아는 한 : SELECT * FROM X WHERE (key1, key2) IN (SELECT key1 key2 FROM ...)

      당신은 당신의 WHERE 절 분할해야 : SELECT * FROM X WHERE key1 IN (SELECT key1 FROM y) AND key2 IN (SELECT key2 FROM y)

    • 보다 작음 비교로 자체 조인이 지원되지 않습니다. 외부 조인은 EQ 비교 만 지원합니다.

      예, 지금 바로 그 시점입니다.

  • 관련 문제