【发布时间】:2013-01-25 15:45:51
【问题描述】:
我在加入表格时遇到了一个常见问题,每个条件我得到两个结果,我需要消除一个。
例如,我现在正试图找出我有哪些产品代码的库存,以及我是否有任何订单以及到期时间。我只想查看每个产品代码一次,当我运行时它工作正常只是显示订单的数量,但现在我想要我必须进行左连接的截止日期。现在我得到每个产品代码的两个结果。我得到一个显示它有什么库存,另一个显示有什么东西在订购以及何时到期。我只想查看库存,如果没有订单,如果有订单,库存和订单作为一条线,而不是两者分开。
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
我得到一个结果,其中显示了实物库存、免费库存、订单中的内容和到期日期为空,然后一个结果显示没有实物库存、免费库存、订单中的内容和到期日。
任何帮助表示赞赏。
【问题讨论】:
-
请为您的 RDBMS(SQL Server?)添加标签。
-
请显示实际输出和预期输出。这样可以更轻松地查看您要执行的操作。
-
代码项目 phys 免费订购到期 NB03 面包屑 346.0000 306.0000 80.0000 NB03 面包屑 0.0000 306.0000 80.0000 15/02/2013
-
请edit您的问题添加所需的信息。您使用的数据库引擎是您的帖子和标签中必须包含的关键信息。
标签: sql join sql-server-2008-r2 duplicates