2017-10-29 1 views
2

이 쿼리에 다른 열을 추가하여 처리해야하는 백 오더를 표시하고 싶습니다.계산 된 필드가있는 SQL 조인 테이블

현재 테이블에는 미결제 항목이있는 모든 주문과 재고 레퍼런스의 재고 금액이 표시됩니다.

권장 인보이스 금액에 대한 필드를 추가하고 싶습니다. 주문 수량이 5 즉 경우, 송장 수량은 2 및 주식 수량의는의 inStock 금액이 100 다음 3

나의 현재 시도를 제공하기 위해 제안 인 경우 (2) 다음 2

을 제공하는 제안입니다 아래에 있지만 마지막 비트를 수행하는 방법을 알아낼 수 없습니다.

내가 (qtyOrdered-qtyinvoiced) 할 필요가 있지만 문자 그대로 벽돌 벽에 부딪쳤다는 것을 알고있다.

SELECT 
    c.cus_name, 
    ol.orderLines_stockRef, 
    ol.orderLines_qtyOrdered, 
    ol.orderlines_qtyInvoiced, 
    pr.products_instock 
FROM 
    cus c 
     JOIN 
    orderheader oh ON oh.orderHeader_customer = c.cus_id 
     JOIN 
    orderlines ol ON ol.orderLines_orderId = oh.orderHeader_id 
     JOIN 
    products pr ON ol.orderlines_stockref = pr.products_reference 
WHERE 
    ol.orderLines_qtyOrdered <> ol.orderlines_qtyInvoiced 

전류 출력 :

Output

+3

샘플 데이터없이, 나는 적어도 당신이 무엇에 관해 얘기하는지 단서가 없다. –

+0

약간 업데이트하기 –

+0

고객에게 보낼 수있는 글의 수를 계산하는 추가 열이 하나 있습니다. 라인 1은 2가 될 것입니다. 라인 2는 3 일 것입니다. 라인 3은 1 일 것입니다. (이것들에 충분한 재고가 있기 때문에) –

답변

1

이 시도 :

SELECT 
    c.cus_name, 
    ol.orderLines_stockRef, 
    ol.orderLines_qtyOrdered, 
    ol.orderlines_qtyInvoiced, 
    pr.products_instock, 
    (CASE WHEN ol.orderLines_qtyOrdered - ol.orderlines_qtyInvoiced > pr.products_instock 
      THEN pr.products_instock 
      ELSE ol.orderLines_qtyOrdered - ol.orderlines_qtyInvoiced) AS qtyToSend, 
FROM 
    cus c 
     JOIN 
    orderheader oh ON oh.orderHeader_customer = c.cus_id 
     JOIN 
    orderlines ol ON ol.orderLines_orderId = oh.orderHeader_id 
     JOIN 
    products pr ON ol.orderlines_stockref = pr.products_reference 
WHERE 
    ol.orderLines_qtyOrdered <> ol.orderlines_qtyInvoiced 
+0

비록 그것을 보낼 충분한 재고가 있는지 확인하지 않습니다, 그건 내 주요 문제입니다! –

+0

재고가 5 개 있지만 10을 보내야하는 경우 결과는 5 일 수 있으므로 5 개만 사용할 수 있습니다. –

+0

다시 읽으면 거기에 있습니까? 하지만 고마워. 그건 내가 원한거야. –