2017-12-27 2 views
0

나는이 조건이 어디 마지막을 제외하고 작동하는 것 같군 다음 쿼리 :SAP B1의 HANA 쿼리 - 조건이 작동하지

WHERE 
    ((T2."WhsCode" = ('03') OR T2."WhsCode" = ('33')) 

    AND 

    ((T1."WhsCode" <> ('03') OR T1."WhsCode" <> ('33')) 

    OR 

    T0."DocNum" IS NULL)) 

두 번째 부분을 고려하지 않는 것 (AND 이후). 아무도 내가 잘못 가고있는 것을 볼 수 있습니까? 울부 짖는 소리

전체 코드 : 당신이 구문을 변경하는 경우

SELECT DISTINCT T0."DocNum" AS "QUOT DocNum", T0."CANCELED" AS "QUOT Canc", T3."DocNum" AS "OC DocNum", T3."CANCELED" AS "OC Canc", T5."DocNum" AS "RECP DocNum", T5."CANCELED" AS "RECP Canc", T0."DocDate" AS "Env Date", T0."ReqDate" AS "Lev Date", T3."DocDate" AS "OC Date", T5."DocDate" AS "Recp Date", T1."LineNum", CONCAT(REPLACE(T1."ItemCode",'.','_'),'_') AS SKU, T1."ItemCode", T1."WhsCode", T2."LineNum", CONCAT(REPLACE(T2."ItemCode",'.','_'),'_') AS SKU, T2."ItemCode", T2."WhsCode", T1."PQTReqQty" AS "Qtt_Pedida", T1."Quantity" AS "Qtt_Env", T2."Quantity" AS "Qtt_OC", T4."Quantity" AS "Qtt_Rec", CASE WHEN (CASE WHEN ((WEEKDAY(ADD_DAYS(T0."ReqDate",2))=5) OR (WEEKDAY(ADD_DAYS(T0."ReqDate",2))=6)) THEN ADD_DAYS(T0."ReqDate",4) ELSE ADD_DAYS(T0."ReqDate",2) END)>=CURRENT_DATE THEN 'TRUE' ELSE 'FALSE' END AS "Aft_Tdy", CASE WHEN (T0."CANCELED"='N' OR T0."CANCELED" IS NULL) AND (T3."CANCELED"='N' OR T3."CANCELED" IS NULL) AND (T5."CANCELED" IS NULL OR T5."CANCELED"='N') THEN 'TRUE' ELSE 'FALSE' END AS "Consid" 

FROM OPQT T0 LEFT JOIN PQT1 T1 ON T0."DocEntry" = T1."DocEntry" LEFT JOIN POR1 T2 ON T1."TrgetEntry"= T2."DocEntry" AND T1."LineNum"=T2."BaseLine" LEFT JOIN OPOR T3 ON T2."DocEntry" = T3."DocEntry" LEFT JOIN PDN1 T4 ON T2."LineNum"=T4."BaseLine" AND T2."DocEntry"=T4."BaseEntry" LEFT JOIN OPDN T5 ON T4."DocEntry" = T5."DocEntry" WHERE (T1."WhsCode"='03' OR T1."WhsCode"='33') 

UNION ALL 

SELECT DISTINCT T0."DocNum" AS "QUOT DocNum", T0."CANCELED" AS "QUOT Canc", T3."DocNum" AS "OC DocNum", T3."CANCELED" AS "OC Canc", T5."DocNum" AS "RECP DocNum", T5."CANCELED" AS "RECP Canc", T0."DocDate" AS "Env Date", T0."ReqDate" AS "Lev Date", T3."DocDate" AS "OC Date", T5."DocDate" AS "Recp Date", T1."LineNum", CONCAT(REPLACE(T1."ItemCode",'.','_'),'_') AS SKU, T1."ItemCode", T1."WhsCode", T2."LineNum", CONCAT(REPLACE(T2."ItemCode",'.','_'),'_') AS SKU, T2."ItemCode", T2."WhsCode", T1."PQTReqQty" AS "Qtt_Pedida", T1."Quantity" AS "Qtt_Env", T2."Quantity" AS "Qtt_OC", T4."Quantity" AS "Qtt_Rec", CASE WHEN (CASE WHEN ((WEEKDAY(ADD_DAYS(T0."ReqDate",2))=5) OR (WEEKDAY(ADD_DAYS(T0."ReqDate",2))=6)) THEN ADD_DAYS(T0."ReqDate",4) ELSE ADD_DAYS(T0."ReqDate",2) END)>=CURRENT_DATE THEN 'TRUE' ELSE 'FALSE' END AS "Aft_Tdy", CASE WHEN (T0."CANCELED"='N' OR T0."CANCELED" IS NULL) AND (T3."CANCELED"='N' OR T3."CANCELED" IS NULL) AND (T5."CANCELED" IS NULL OR T5."CANCELED"='N') THEN 'TRUE' ELSE 'FALSE' END AS "Consid" 

FROM OPOR T3 LEFT JOIN POR1 T2 ON T2."DocEntry" = T3."DocEntry" LEFT JOIN PQT1 T1 ON T1."TrgetEntry"= T2."DocEntry" AND T1."LineNum"=T2."BaseLine" LEFT JOIN OPQT T0 ON T0."DocEntry" = T1."DocEntry" LEFT JOIN PDN1 T4 ON T2."LineNum"=T4."BaseLine" AND T2."DocEntry"=T4."BaseEntry" LEFT JOIN OPDN T5 ON T4."DocEntry" = T5."DocEntry" WHERE ((T2."WhsCode" = ('03') OR T2."WhsCode" = ('33')) AND ((T1."WhsCode" <> ('03') OR T1."WhsCode" <> ('33')) OR T0."DocNum" IS NULL)) 
+0

당신은 SAP 테이블에서 네이티브 HANA 데이터베이스 테이블로 NULL이 없다는 것을 알고 있습니다. DocNum = ''또는 DocNum = ''등과 같이 NULL 대신 빈 문자열을 검사하려고 했습니까? – Eralper

+0

안녕하세요 @Eralper, 아니요. (SAP 사용에 대한 교육을받지 않았으므로 계속 배우고 있습니다.) 나는 질의를 재구성하고 결과를 게시 할 것이다. 감사합니다. – BrunoR

+0

실제로 그것을 시도 할 시간이있었습니다. 정확히 같은 결과를 얻었습니다. 홀 쿼리의 무결성에 대해 궁금해하고 있습니다. – BrunoR

답변

0

논리가 더 쉬울 수는 이해합니다.

귀하의 문은 어쩌면이 논리는 당신이 원하는 아니다 동일

where 
    T2."WhsCode" in ('03','33') 
and 
    ( T1."WhsCode" not in ('03','33') 
    or T0."DocNum" IS NULL 
    ) 

있나요?