2017-10-29 13 views
2

このクエリに別の列を追加して、処理が必要なバックボードを表示したいとします。計算されたフィールドを持つSQL結合テーブル

現在、この表には未処理明細が含まれているすべての注文と、各在庫基準の在庫金額が表示されています。

提案された請求書金額の欄を追加したいとします。 INSTOCK量が3

私の現在の試行をお届けすることをお勧めした後、100だった場合 すなわち発注数量が5であれば、請求書数量が在庫数量2とでは、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つ必要です。 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

あなたがそれを読んでいればそこにありますか?しかし、ありがとう、それはまさに私が望んでいたものです。 –

関連する問題