首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL在join后消除一个结果

SQL在join后消除一个结果
EN

Stack Overflow用户
提问于 2013-02-10 18:49:47
回答 1查看 238关注 0票数 1

我在连接表时遇到了一个常见的问题,即每个条件都有两个结果,而我需要消除一个结果。

例如,我现在正在尝试找出我有什么库存的产品代码,以及我是否有订单上的东西以及它什么时候到期。我只想查看每个产品代码一次,当我只是显示订单上的数量时,它工作得很好,但现在我想要到期日,我必须做一个左连接。现在我得到了每个产品代码的两个结果。我正在得到一个显示它有什么库存和另一个,如果有一些东西上的订单和何时到期。我只希望在没有订单的情况下查看stock,如果有订单上的东西,则将stock和order作为一行,而不是将两者分开。

代码语言:javascript
复制
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 

我得到了一个结果,它显示了实物库存,自由库存,订单上的什么和到期日为null,然后一个结果显示没有实物库存,自由库存,订单上的什么和到期日。

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-02-10 22:00:20

我不确定我是否完全理解了这个问题。但一般来说,您不希望使用SQL来执行您所描述的操作。使用SQL返回数据(就像您的查询现在所做的那样),并使用报表编辑器隐藏重复值、在页眉和页脚中汇总数据等。

这是一个简单的劳动分工。SQL返回数据;报表编写器(或其等效编写器)处理表示和布局。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14796930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档