2013-02-10 64 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返回数据;报告编写者(或他们的同等职位)处理演示文稿和布局。