繁体   English   中英

将值的SUM与SQL Server中的不同表进行比较

[英]Comparing SUM of values with different tables in SQL Server

我有两个表具有相似的值,我需要比较两个表并找出它们之间的差异:

SQL FIDDLE- http: //sqlfiddle.com/#!6/7412e/9

现在您可以看到,Jun-17中的两个表之间存在差异。

正如您所看到的(所有人的总和),表1的6月价格为75英镑,表2的6月价格为125英镑。

我要查找的结果是将金额总计在一起并每月对两个表进行比较,如果我希望在“未知”下列出的两个表之间存在金额差异。

| MonthYear | Person | Amount | Month total
+-----------+--------+--------+--------------
|    Jun-17 |    Sam |     25 | 75(Table1)
|    Sep-17 |    Ben |     50 | 50(Table2)
|    Jun-17 |    Tom |     50 | 75(Table1)
|    Jun-17 |    Sam |     25 | 125(Table2)
|    Sep-17 |    Ben |     50 | 50(Table2)
|    Jun-17 |    Tom |     50 | 125(Table2)
|    Jun-17 |        |     50 | 125(Table2)

现在,当一个月的总金额之间存在差异时,我希望将差异归类为未知

例如

| MonthYear | Person | Amount | Month total
+-----------+--------+--------+--------------
|    Jun-17 |    Sam |     25 | 75(Table1)
|    Sep-17 |    Ben |     50 | 50(Table2)
|    Jun-17 |    Tom |     50 | 75(Table1)
|    Jun-17 |    Sam |     25 | 125(Table2)
|    Sep-17 |    Ben |     50 | 50(Table2)
|    Jun-17 |    Tom |     50 | 125(Table2)
|    Jun-17 | Unknown|     50 | 125(Table2)

我了解您可以创建一个人为空以显示未知数的情况,但我需要按月计算的两个表之间的差额具体计算出来。

这对任何人有意义吗,这真的很难解释。

通常,在任何FROM子句中,只要为表名指定一个核心名称(此名称中的t1和t2),即可将其替换为另一个SELECT:

SELECT t1.MonthYear, t1.AmountT1, t2.AmountT2, t1.amountT1 - isnull(t2.amountT2, 0) as Unknown'
from
  ( SELECT
    MonthYear, 
    SUM(Amount) AS [AmountT1]
    FROM
    Invoice  
    GROUP BY MonthYear) t1
left outer join
   ( SELECT 
     MonthYear, 
     SUM(Amount) AS [AmountT2]
     FROM
     Invoice2
     GROUP BY MonthYear) t2 on t2.MonthYear = t1.MonthYear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM