2013-02-10 84 views
1

當遇到一個常見問題時,當我得到兩個結果的每個條件,我需要消除一個表。SQL加入後消除一個結果

例如,我現在試圖找出我有什麼樣的產品代碼庫存,以及如果我有什麼訂單,什麼時候到期,我只想看到每個產品代碼,並且它工作的很好。我只是按順序顯示數量,但現在我想要到期日我必須做一個左連接。現在我得到每個產品代碼的兩個結果。我得到一個顯示它有什麼庫存和另一個,如果有什麼訂單和什麼時候到期。我只想看到股票,如果沒有訂單和股票和訂單作爲一條線,如果有訂購的東西,而不是兩個分開。

DECLARE @cat VARCHAR(150) 

SET @cat = 'crumb' --Put your search string in the single speech marks 
SELECT category_treeview_node.ctn_description    AS 
     [Product Category], 
     variant_detail.vad_variant_code      AS [Variant Code], 
     variant_detail.vad_description      AS 
     [Variant Description], 
     Sum(variant_transaction_header.vth_current_quantity) AS [Physical Stock], 
     variant_stock_quantity.vasq_free_stock_quantity  AS [Free Stock], 
     variant_stock_location.vsl_stock_on_purchase_order AS [Stock on order], 
     purchase_order_header.poh_required_date    AS [Due Date] 
FROM variant_stock_quantity 
     INNER JOIN (variant_detail 
        INNER JOIN variant_category 
          ON variant_detail.vad_id = 
           variant_category.vac_vad_id 
        INNER JOIN category_treeview_node 
          ON category_treeview_node.ctn_id = 
           variant_category.vac_ctn_id) 
       ON variant_stock_quantity.vasq_vad_id = variant_detail.vad_id 
     INNER JOIN variant_stock_location 
       ON variant_detail.vad_id = variant_stock_location.vsl_vad_id 
     LEFT JOIN (variant_transaction_header_total 
        INNER JOIN variant_transaction_header 
          ON variant_transaction_header_total.vtht_vth_id = 
          variant_transaction_header.vth_id) 
       ON variant_detail.vad_id = variant_transaction_header.vth_vad_id 
     LEFT JOIN purchase_order_line 
       ON purchase_order_line.pol_id = 
       variant_transaction_header.vth_pol_id 
       AND variant_detail.vad_id = purchase_order_line.pol_vad_id 
     LEFT JOIN purchase_order_header 
       ON purchase_order_header.poh_id = purchase_order_line.pol_poh_id 
WHERE category_treeview_node.ctn_description = @cat 
GROUP BY category_treeview_node.ctn_description, 
      variant_detail.vad_variant_code, 
      variant_detail.vad_description, 
      variant_stock_quantity.vasq_free_stock_quantity, 
      variant_stock_location.vsl_stock_on_purchase_order, 
      purchase_order_header.poh_required_date 
HAVING variant_stock_quantity.vasq_free_stock_quantity >= 0 

即時得到一個結果,顯示實際庫存,免費的股票,什麼在秩序和零點的截止日期,然後一個結果,顯示沒有實際庫存,免費的股票,什麼訂單和到期日期。

任何幫助表示讚賞。

+1

請爲您的RDBMS(SQL Server?)添加標籤。 – Mat 2013-02-10 10:52:24

+1

請顯示實際產量和預期產量。這可以讓你更容易看到你想要做什麼。 – Dukeling 2013-02-10 10:52:54

+0

代碼項目的PHY釋放的訂單到期 NB03 \t麪包屑346.0000 \t 306.0000 \t 80.0000 \t NB03 \t麪包屑0.0000 \t 306.0000 \t 80.0000 \t 15/02/2013 – user2058568 2013-02-10 10:59:41

回答

0

我不確定我完全理解了這個問題。但總體而言,您不想使用SQL來執行您所描述的內容。使用SQL返回數據(如現在的查詢),並使用報告編寫器隱藏重複值,彙總頁眉和頁腳中的數據等。

這是一個簡單的分工。 SQL返回數據;報告編寫者(或他們的同等職位)處理演示文稿和佈局。