首页 > 解决方案 > 查找与两个表之间的日期和金额匹配的值

问题描述

如果两个表格的日期和金额匹配,如果金额不在真实日期,我如何将金额与另一个日期进行比较?

condition1 如果日期和金额匹配则为真

条件 2. 如果您在该日期没有相同的金额,则查找与上一个日期对应的金额,如果您有匹配的金额

condition3 如果金额不匹配则为 False

我有 2 张桌子,一张用于 t1,另一张用于他们的 t2。那些是mariaDB

t1 表:

  id      | date  |     cash_amount_received
----------------------------------
  1        2020-04-01      7000
  2        2020-04-29      1000
  3        2020-04-29      2000
  4        2020-04-29      3000
  5        2020-04-29      4000
  6        2020-04-29      5000
  7        2020-04-29      6000
  8        2020-04-29      10000

t2 表:

  id      |    date  |    amount
----------------------------------
  1             2020-04-29       1000
  2             2020-04-29       2000
  3             2020-04-29       3000
  4             2020-04-29       4000
  5             2020-04-29       5000
  6             2020-04-29       5000
  7             2020-04-29       7000

我想达到这个结果:

 id     |  cash_amount_received    |    amount|    result
-----------------------------------------------------
  1          7000                    7000          true
  2          1000                    1000          true
  3          2000                    2000          true
  4          3000                    3000          true
  5          4000                    4000          true
  6          5000                    5000          true
  7          6000                    null          false
  8          10000                   null          false
  9          null                    5000          false

我应该如何填写查询?我不知道。帮我。

标签: sqlmariadb

解决方案


我认为您应该创建 2 个查询:
一个用于所有已核对的总和
一个用于所有未核对的总和。

和解了

SELECT t1.date, t1.cash_amount_received
FROM t1, t2
WHERE t1.date = t2.date AND t1.cash_amount_received = t2.amount
ORDER BY t1.date, t1.cash_amount_received

不甘心

SELECT t1.date AS t1_date, t1.cash_amount_received, t2.date AS t2_date, t2.amount
FROM t1, t2
WHERE t1.date != t2.date OR t1.cash_amount_received != t2.amount
ORDER BY t1.date, t1.cash_amount_received

推荐阅读