【发布时间】:2020-07-02 07:58:45
【问题描述】:
我有以下情况
表 1
Id Sum
1 100
2 100
3 200
4 400
表 2
ID Sum
5 100
6 200
7 300
8 400
我想编写一个在两个表之间连接的查询,并只显示一次匹配。结果应该是
1 100 Match
2 100 Mismatch
3 200 Match
4 300 Mismatch
5 400 Match
我正在使用这个查询
select a.id, a.sum,b.id,b.sum,
CASE
when a.sum = b.sum then 'Match'
else 'Mismatch'
end as Result
from table1 a LEFT OUTER join table2 b on a.sum = b.sum
结果是
1 100 5 100 Match
2 100 5 100 Match
3 200 6 200 Match
4 400 8 400 Match
基本上,这是一个收集系统。系统自动将数据保存在表 2 中。当员工进行实际收集时,他们会上传表 1 中的数据。现在我想显示一个报告,显示基于总和的收集之间的差异。因此,如果 Employee 插入 100$ 2 次,我应该表明系统只捕获了一次,并且表 1 中有 1 个额外的行
【问题讨论】:
-
请提供您正在执行的查询。
-
select * From Table1 A left outer join Table2 B on A.Sum=B.Sum 这样的结果是100匹配2次,因为值存在于第二个表中。
-
如果
id=1与第二个表中的id=5具有相同的总和而匹配,那么为什么id=2不匹配?修改您的要求 -
请不要要求我们编写您的代码。展示你能做什么 & 说明你被卡住了。通过编辑而不是 cmets 进行澄清。请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表的代码的 SQL。 How to Ask。使用足够多的单词、句子和对部分示例的引用来清楚完整地表达你的意思。
-
解释你进行比较的逻辑.. 100 - 匹配/不匹配令人困惑
标签: sql join select window-functions