Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 当两个表出现在第一个表中而不是第二个表中时,如何联接表并从中获取结果,反之亦然_Sql_Sql Server_Join - Fatal编程技术网

Sql 当两个表出现在第一个表中而不是第二个表中时,如何联接表并从中获取结果,反之亦然

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中的两行中 我已

我想在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 |日期|收入|收入

  • 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
结果表我想要

总收入 *客户id |收入|日期|总收入|

  • 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
amd
date\u of\u revenue=201401
,生成的表格应具有
total\u revenue=140
(即70+70)。是吗?不,我忘了c5,它也必须在结果表中出现两次,因为日期不同。如果你现在记住它,为什么不改正错误呢?迪恩,你肯定很棒。非常好用,非常感谢你的帮助。上帝越来越保佑你