来自2个联接表的值的总和,即使ID不匹配

麦可

我正在尝试制作两个表格,根据他们的合同编号将它们合并在一起,然后获得两年之间每个客户合同金额的总和。

但是,其中一些合同来自较旧的系统,在该系统中我们没有在当前系统中进行记录。我们所拥有的是一个已归档的表,该表显示了合同的价格,但与旧合同没有关系。我不能只从已存档的表中获取数据的原因是,即使这些合同已存档,也可以在此之后随时删除或取消。

因此,我想弄清楚如何将这两个表连接在一起,并在某些绑定到合同编号而有些未绑定到客户编号的情况下,获得客户合同总额的总和?

我知道这很难解释,但希望通过显示架构和查询会有所帮助。

这是我们的存档表架构,其中包含客户从旧系统和新系统获得的每个合同的存档。

|customer_id | contract_amount | date       | contract_number |
|1           | 300.00          | 2019-02-01 | abc123          |
|1           | 250.00          | 2019-02-03 | abc456          |
|1           | 320.00          | 2019-04-02 | abc789          |
|1           | 230.00          | 2019-07-03 | efg123          |

合同表架构:

|customer_id | contract_amount | date_authorized | contract_number | status   |
|1           | 300.00          | 2019-01-03      | abc123          | Approved |
|1           | 250.00          | 2019-01-06      | abc456          | Cancelled|
|1           | 320.00          | 2019-02-01      | abc789          | Approved |

这是我当前正在获取2020年至2019年客户1的合同总额的查询:

select a.customer_id
     , sum(a.contract_amount) as year_total 
  from Archives_Table a 
  left 
  join Contracts_Table c 
    on (a.contract_number = c.contract_number) 
 where a.date >= '2019-01-01' 
   and a.date < '2020-01-01' 
   and c.status = 'Approved' 
   and a.customer_id = '1';

我得到的结果是:

|customer_id | year_total |
|1           | 620.00     |

但是我应该得到这个:

|customer_id | year_total |
|1           | 850.00     |

合同编号efg123来自旧系统,我们在新系统中没有实际合同数据的记录,因此应将其添加到year_total我尝试了普通联接,左联接和右联接,以查看这是否会更改数据但没有运气。我曾尝试在网上寻找类似问题,但无法找到这种情况。如果有人能指出正确的方向或知道如何解决这个问题,那将是很好的。

用户14717238

c.status该值efg123合同,后左侧空参加,并通过过滤c.status = 'Approved'WHERE的条款。因此,尝试像这样更改您的SQL查询:

SELECT 
   a.customer_id, SUM(a.contract_amount) AS year_total 
FROM Archives_Table a 
LEFT JOIN Contracts_Table c ON (a.contract_number = c.contract_number)
WHERE a.date >= '2019-01-01' AND a.date < '2020-01-01' AND a.customer_id = '1'
  AND COALESCE(c.status, 'Approved') = 'Approved' 
GROUP BY a.customer_id

小提琴

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL内部联接检索表1,即使表2与ID不匹配

来自分类Dev

来自2个表的Distict值与来自相同两个表的汇总和

来自分类Dev

如何联接2个表并匹配空值

来自分类Dev

如何联接2个表并匹配空值

来自分类Dev

来自 2 个表的 2 列的值的总和忽略结果等于 0

来自分类Dev

来自 2 个表的 2 列的值的总和并按列排序

来自分类Dev

将两个表与不匹配的行联接

来自分类Dev

来自两个单独表的联接ID和名称

来自分类Dev

来自2个不同匹配字段的Awk总和列

来自分类Dev

来自两个表的SQL总和和组值

来自分类Dev

来自两个不同表的值的总和

来自分类Dev

联接2个表并按ID显示

来自分类Dev

如何联接三个表,其中一个表与其他两个表的ID不匹配?

来自分类Dev

联接表 + 分组依据 + 总和 + 查找第 N 个最高总和值

来自分类Dev

在匹配的ID上联接两个表?

来自分类Dev

PHP Select Query 用于比较来自不同 mysql 表的 2 个值(如果它们匹配)

来自分类Dev

我的查询联接来自2个以上的表,使用相同的键引用返回双精度值

来自分类Dev

返回两个SQL表的最佳值以及表2中不匹配的表1中的值

来自分类Dev

使用来自另一个表的值的总和更新表

来自分类Dev

试图通过添加联接在一个表中获得2个总和

来自分类Dev

Sql匹配id与来自与另一个表匹配的表的名称

来自分类Dev

需要显示来自2个单独表的匹配记录

来自分类Dev

如何联接来自2个不同表的2个查询

来自分类Dev

如何在SQL中列不匹配的情况下联接两个表

来自分类Dev

Linq如何联接并获取2个表值

来自分类Dev

基于2个值联接数据表

来自分类Dev

php mysql联接2个没有通用值的表

来自分类Dev

MySQL联接/求和来自一个表列的值与来自另一个表的计数值

来自分类Dev

MySQL:合并2个表并计算总和值

Related 相关文章

  1. 1

    MySQL内部联接检索表1,即使表2与ID不匹配

  2. 2

    来自2个表的Distict值与来自相同两个表的汇总和

  3. 3

    如何联接2个表并匹配空值

  4. 4

    如何联接2个表并匹配空值

  5. 5

    来自 2 个表的 2 列的值的总和忽略结果等于 0

  6. 6

    来自 2 个表的 2 列的值的总和并按列排序

  7. 7

    将两个表与不匹配的行联接

  8. 8

    来自两个单独表的联接ID和名称

  9. 9

    来自2个不同匹配字段的Awk总和列

  10. 10

    来自两个表的SQL总和和组值

  11. 11

    来自两个不同表的值的总和

  12. 12

    联接2个表并按ID显示

  13. 13

    如何联接三个表,其中一个表与其他两个表的ID不匹配?

  14. 14

    联接表 + 分组依据 + 总和 + 查找第 N 个最高总和值

  15. 15

    在匹配的ID上联接两个表?

  16. 16

    PHP Select Query 用于比较来自不同 mysql 表的 2 个值(如果它们匹配)

  17. 17

    我的查询联接来自2个以上的表,使用相同的键引用返回双精度值

  18. 18

    返回两个SQL表的最佳值以及表2中不匹配的表1中的值

  19. 19

    使用来自另一个表的值的总和更新表

  20. 20

    试图通过添加联接在一个表中获得2个总和

  21. 21

    Sql匹配id与来自与另一个表匹配的表的名称

  22. 22

    需要显示来自2个单独表的匹配记录

  23. 23

    如何联接来自2个不同表的2个查询

  24. 24

    如何在SQL中列不匹配的情况下联接两个表

  25. 25

    Linq如何联接并获取2个表值

  26. 26

    基于2个值联接数据表

  27. 27

    php mysql联接2个没有通用值的表

  28. 28

    MySQL联接/求和来自一个表列的值与来自另一个表的计数值

  29. 29

    MySQL:合并2个表并计算总和值

热门标签

归档