SAP HANA 쿼리에서 OINV
과 ODLN
을 합류하려고하는데 공통점이있는 필드를 찾지 못하는 것 같습니다.납품과 송장 간 링크 - SAP HANA 쿼리
별도의 테이블을 통해 링크되어 있습니까? 또는 나는 명백한 것을 놓치고 있는가?
최종 결과는 납품 문서 번호와 관련 송장 번호 및 비즈니스 파트너 목록이있는 단순한 테이블입니다. 그것은 나를 도왔다에있는 링크가 포함 된대로
SAP HANA 쿼리에서 OINV
과 ODLN
을 합류하려고하는데 공통점이있는 필드를 찾지 못하는 것 같습니다.납품과 송장 간 링크 - SAP HANA 쿼리
별도의 테이블을 통해 링크되어 있습니까? 또는 나는 명백한 것을 놓치고 있는가?
최종 결과는 납품 문서 번호와 관련 송장 번호 및 비즈니스 파트너 목록이있는 단순한 테이블입니다. 그것은 나를 도왔다에있는 링크가 포함 된대로
첫째, 신용 것도 사실이다 https://archive.sap.com/discussions/thread/1440163 가 다음과 같은 관계가 주어진다 확인하시기 바랍니다 찾고 있던 해결책을 찾는다. 그러나 솔루션에는 설명이 포함되어 있지 않으며 찾고있는 결과를 제공하지 않습니다.
SAP의 판매 주문에 대한 주요 정보는 두 개의 테이블, ORDR
및 RDR1
에 저장됩니다. ORDR
에는 판매 주문마다 한 줄씩 표시되며 RDR1
에는 판매 주문의 각 제품 행마다 한 줄씩 표시됩니다.
배달 노트 및 청구서 (기본적으로 SAP의 모든 문서)는이 패턴을 따릅니다.
왜이 질문에 중요합니까? 판매 주문, 납품서 및 송장을 연결하는 데이터가 포함 된 열은 RDR1
(또는 이와 유사한 변형)에 있습니다. 이름은 TrgetEntry
입니다.
판매 주문에 각 제품에 대한 행이 있기 때문에 둘 이상의 제품이있는 판매 주문이 결과에 여러 번 표시되므로 조인을 할 수 없습니다. 다음 쿼리는 그룹화를 사용하여 각 판매 주문에 대한 줄이있는 테이블을 표시하고 배달 정보에 연결하는 데 필요한 정보를 제공합니다.
SELECT T0."DocEntry" AS "SO DE", T0."DocNum" AS "Sales Order Number", T1."TrgetEntry" AS "SO TE", COUNT(T0."DocNum") AS "Rows"
FROM ORDR T0
LEFT JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry"
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry"
테이블 이름 만 변경하면 배달 노트 및 송장에 대해 유사한 쿼리를 만들 수 있습니다.
그런 다음 TrgetEntry
및 DocEntry
을 사용하여 다양한 결과를 연결할 수 있습니다.
SELECT S0."SalesOrderNumber", S1."DeliveryNumber", S2."DocNum" AS "InvoiceNumber", S0."Rows", S2."DocTotal"
FROM (SELECT T0."DocEntry" AS "SO_DE", T0."DocNum" AS "SalesOrderNumber", T1."TrgetEntry" AS "SO_TE", COUNT(T0."DocNum") AS "Rows"
FROM ORDR T0
LEFT JOIN RDR1 T1 ON T0."DocEntry" = T1."DocEntry"
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry") S0
LEFT JOIN (SELECT T0."DocEntry" AS "DN_DE", T0."DocNum" AS "DeliveryNumber", T1."TrgetEntry" AS "DN_TE"
FROM ODLN T0
LEFT JOIN DLN1 T1 ON T0."DocEntry" = T1."DocEntry"
GROUP BY T0."DocEntry", T0."DocNum", T1."TrgetEntry") S1 ON S0."SO_TE" = S1."DN_DE"
LEFT JOIN OINV S2 ON S1."DN_TE" = S2."DocEntry"
:
내가 판매 주문, 그들의 관련 납품 및 송장을 표시하기 위해 사용하는 최종 코드는 다음과 같다
SELECT Distinct(T0.DocNum),T0.DocDate, T0.CardCode, T0.CardName, T1.ItemCode, T1.Quantity, T1.Price,T1.TotalSumSy, T0.DocTotal
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN ODLN T2 ON T2.DocEntry = T1.TrgetEntry
INNER JOIN DLN1 T3 on T3.DocEntry = T2.Docentry
INNER JOIN OINV T4 ON T4.DocEntry = T3.TrgetEntry
INNER JOIN INV1 T5 ON T5.DocEntry = T4.DocEntry
LEFT JOIN ORDN T6 ON T6.DocEntry = T5.TrgetEntry
LEFT JOIN RDN1 T7 ON T7.DocEntry = T6.DocEntry
그래서 다음과 같은 관계가, 자신의 답변 Eralper에
SELECT *
FROM ODLN T2
INNER JOIN DLN1 T3 on T3.DocEntry = T2.Docentry
INNER JOIN OINV T4 ON T4.DocEntry = T3.TrgetEntry