【发布时间】:2014-10-11 02:54:28
【问题描述】:
我一直在为所需的输出编写一份报告。该场景是具有同一客户的多个订单的块制造公司在不同日期以信用方式交付订单,并且客户支付部分金额而与订单无关。我一直卡在这两张表里:
Orders_master,
do_no Client_id Site_id Order_date 金额 1 1 1 2013-10-27 50000 2 1 1 2013-10-29 47000 3 1 1 2013-10-15 10000Client_payments,
P_id Client_id Site_id P_date 金额 1 1 1 2013-11-05 30000 2 1 1 2013-11-10 67000 3 1 1 2013-11-20 10000我需要帮助来编写一个查询,该查询给出两个表中所有行的以下输出,
Do_no Client_id Site_id Order_date P_date Order_amount Payment_amount 1 1 1 2013-10-27 空 50000 空 2 1 1 2013-10-29 空 47000 空 空 1 1 空 2013-11-05 空 30000 空 1 1 空 2013-11-10 空 67000 3 1 1 2013-11-15 空 10000 空 空 1 1 空 2013-11-20 空 10000下面的查询返回orders_master表的所有行,但错过了上面显示的所需输出的最后一行,
select om.*, cp.*
from orders_master om left join
client_payment cp on
om.order_date = cp.p_date and
om.site_id = cp.site_id
where om.site_id = 1
我尝试了不同的连接,但它不会返回两列的所有行,如果返回则带有重复值而不是空值
【问题讨论】:
-
你试过全外连接吗?
-
是的,我试过了,但它返回第一个表的重复行,直到它返回链接/子表的所有行
-
可能是因为1个订单主有多个付款信息。您可能在 client_payments 数据中重复了 p_date。因此它满足加入,@GarethD 发布的应该是你想要的,如果它是你想要的,请将其标记为已接受的答案
标签: sql sql-server sql-server-2008