由于加入表而导致的记录重复
Posted
技术标签:
【中文标题】由于加入表而导致的记录重复【英文标题】:Duplication of Records due to join a table 【发布时间】:2021-05-15 23:40:19 【问题描述】:如标题所述,我尝试加入表格时出现重复记录
假设下面的主表称为“客户”
Month_id | customer_name | Amount |
---|---|---|
202012 | A | 10000 |
202012 | B | 569 |
202012 | C | 23000 |
第二张表称为“日期”
Year | 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 条记录
EX:客户 A
我该如何解决这个问题?
【问题讨论】:
您能否以格式化文本而不是图像的形式发布数据?这将有助于人们尝试对您的示例数据进行查询SELECT DISTINCT ...
不会吗?
【参考方案1】:
您需要按月份对日期进行分组;一个简单的方法可能是:
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
金额和事情发生变化
【讨论】:
谢谢,它很有用,由于使用了 Microstrategy,我无法修改连接表,它将始终保持原样。但是,我正在寻找另一种方法来修改“客户”表来解决这个问题。你觉得呢? 刚刚展示了一个方法,但要注意约束以上是关于由于加入表而导致的记录重复的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2005 冻结(由于应用程序),需要记录 [重复]