sql - 由于加入表而导致的记录重复
问题描述
如标题所述,当我尝试加入表格时存在记录重复
假设下面的主要表格称为“客户”
Month_id | 顾客姓名 | 数量 |
---|---|---|
202012 | 一个 | 10000 |
202012 | 乙 | 569 |
202012 | C | 23000 |
第二张表称为“日期”
年 | Month_id | Time_id |
---|---|---|
2020 | 202012 | 20201201 |
2020 | 202012 | 20201202 |
2020 | 202012 | 20201203 |
2020 | 202012 | 20201204 |
2020 | 202012 | 20201205 |
2020 | 202012 | 20201206 |
2020 | 202012 | 20201207 |
2020 | 202012 | 20201208 |
2020 | 202012 | 20201209 |
2020 | 202012 | 20201210 |
2020 | 202012 | 20201211 |
2020 | 202012 | 20201212 |
2020 | 202012 | 20201213 |
2020 | 202012 | 20201214 |
2020 | 202012 | 20201215 |
2020 | 202012 | 20201216 |
2020 | 202012 | 20201217 |
2020 | 202012 | 20201218 |
2020 | 202012 | 20201219 |
2020 | 202012 | 20201220 |
2020 | 202012 | 20201221 |
2020 | 202012 | 20201222 |
2020 | 202012 | 20201223 |
2020 | 202012 | 20201224 |
2020 | 202012 | 20201225 |
2020 | 202012 | 20201226 |
2020 | 202012 | 20201227 |
2020 | 202012 | 20201228 |
2020 | 202012 | 20201229 |
2020 | 202012 | 20201230 |
2020 | 202012 | 20201231 |
我试图加入他们两个来获取年份(注意:我知道我可以使用 substr 函数从 mont_id 中提取年份,但我不想这样做,因为这只是一个例子)
select a11.month_id, a11.Customer_name, a11.Amount, a12.year
from customer a11
join Date a12 on a11.month_id = a12.month_id
不幸的是,我在行中得到了重复而不是那样。更清楚地说,我为每个客户获得了 31 条记录
例如:客户 A
我该如何解决这个问题?
解决方案
您需要按月对日期进行分组;一个简单的方法可能是:
select a11.month_id, a11.Customer_name, a11.Amount, a12.year
from customer a11
join
(
select month_id, year
from Date
group by month_id, year
) a12
on a11.month_id = a12.month_id
另一种方法,无需修改连接部分,可以简单地使用DISTINCT
select distinct c.Month_id,c. customer_name, c.Amount, d.year
from customer c
inner join dateTable d
on c.month_id = d.month_id
但请注意,这在很大程度上取决于每个客户和每个月只有一行的事实;否则你可能需要SUM
改变金额和事情
推荐阅读
- python-3.x - 在python中将多个CSV行合并为1
- c# - 从 Windows 2012 服务器下载 Excel 电子表格的 Asp.NET 导致错误
- c# - 如何在 System 命名空间中创建 ToInt32 方法?
- c# - 在 Excel 中,如何在隐藏的行和列中显示数据
- javascript - 在 Google 表格中提交后弹出表单不会关闭
- reactjs - 有没有办法创建一种通用方法来减少状态类似操作的代码量?
- symfony - Symfony 路线。无法设置注释
- bash - Bash 比较值
- ckeditor - #9073 ImageUpload 回调不能跨域调用 CKEditor
- r - 如何在 R 中提取两列数据