Sql 当两个表出现在第一个表中而不是第二个表中时,如何联接表并从中获取结果,反之亦然
我想在SQL server 2012中加入两个表。联接必须在tblA.customer\U id列到tblB.customer,在联接2个表tblA和tblB后,我想如果_revevidence的tblA.date\u等于tblB.revenue\u date,然后添加tblA.revenue+tblB.revenue\u金额,并在一行中显示它们,但是,如果收入地点的tblA.date与tblB.REVOINE日期不同,则将其显示在结果表Tbl\U Total\U REVOINE中的两行中 我已经花了10个多小时尝试使用完全外部连接加入,但它不起作用。我需要你们的帮助,伙计们 这是我所拥有的示例表,我要寻找的是结果表,它看起来像下面的一个。 多谢各位 待定 *客户id |日期|收入|收入Sql 当两个表出现在第一个表中而不是第二个表中时,如何联接表并从中获取结果,反之亦然,sql,sql-server,join,Sql,Sql Server,Join,我想在SQL server 2012中加入两个表。联接必须在tblA.customer\U id列到tblB.customer,在联接2个表tblA和tblB后,我想如果_revevidence的tblA.date\u等于tblB.revenue\u date,然后添加tblA.revenue+tblB.revenue\u金额,并在一行中显示它们,但是,如果收入地点的tblA.date与tblB.REVOINE日期不同,则将其显示在结果表Tbl\U Total\U REVOINE中的两行中 我已
- C1 | 201201 | 100
- C2 | 201203 | 120.20
- C4 | 201304 | 150
- C5 | 201401 | 70
- C1 | 201201 | 50
- C2 | 201203 | 200
- C3 | 201403 | 250
- C5 | 201310 | 50
- C4 | 201401 | 20
- C1 | 201201 | 150
- C2 | 201203 | 320.20
- C3 | 201403 | 250
- C4 | 201304 | 150
- C4 | 201401 | 20
- C5 | 201401 | 70
SELECT Customer_id, Date_of_revenue, SUM(Revenue)
FROM
(
(SELECT Customer_id, Date_of_revenue, Revenue FROM tbl_A)
UNION
(SELECT Customer Customer_id, Revenue_date Date_of_revenue, Revenue_amount Revenue FROM tbl_B)
)
GROUP BY Customer_id, Date_of_revenue
样本数据(或预期结果)中有错误,C5应该有两行:
select isnull(a.Customer_id, b.Customer), isnull(a.Date_of_revenue, b.Revenue_date),
sum(isnull(a.Revenue,0)+isnull(b.Revenue_amount,0)) as Total_revenue
from tbl_A a
full join tbl_B b on a.Customer_id = b.Customer
and a.Date_of_revenue = b.Revenue_date
group by isnull(a.Customer_id, b.Customer), isnull(a.Date_of_revenue, b.Revenue_date)
order by isnull(a.Customer_id, b.Customer), isnull(a.Date_of_revenue, b.Revenue_date)
对于
customer\u id=C5
amddate\u of\u revenue=201401
,生成的表格应具有total\u revenue=140
(即70+70)。是吗?不,我忘了c5,它也必须在结果表中出现两次,因为日期不同。如果你现在记住它,为什么不改正错误呢?迪恩,你肯定很棒。非常好用,非常感谢你的帮助。上帝越来越保佑你