如何汇总两列重复且两列重复的两列?

时间:2018-11-21 17:29:24

标签: sql-server

这可能非常简单,但是我很愚蠢,被卡住,无法找到与我的问题完全匹配的线程...

我需要从表中插入tblGameRecords,看起来像这样:

tblGameRecords(ID:match_no, soccer_team_id, stadium, fake_injuries, hair_wax, date)

...进入另一个表tblTeamRecords,该表应如下所示:

tblTeamRecords(ID:soccer_team_id, stadium, fake_injuries, hair_wax, date)

现在,我的问题是在tblGameRecords中:

1。同一soccer_team_id的自然出现多次。

2。同一date自然会出现多次。

3。有时在同一soccer_team_id上多次出现同一date(叹息...)

我想在tblTeamRecord中每soccer_team_id插入一行。我想要tblGameRecords中该队的最早记录。

如果团队重复tblGameRecords进入date,多次在同一个query上进行比赛,那么我对其中的任何一行都没问题,因为其他列都需要用该行中的相应值填充,无论实际值是否与其他重复项不同。

我显然在编写查询时遇到麻烦,让我无法将这些倍数缩小到一个。这是存储过程btw的一部分。

再次

*编辑:删除多余的附加信息*

1 个答案:

答案 0 :(得分:1)

您可以使用ROW_NUMBER为Soccer_team_id的每个值生成每个日期的行号(以对编号进行分区),然后仅插入那些行号等于1的行:

;with cte as (
select soccer_team_id, stadium, fake_injuries, hair_wax, date, row_number() over(partition by soccer_team_id order by date) as row_no
from tblGameRecords
)
insert into tblTeamRecords(soccer_team_id, stadium, fake_injuries, hair_wax, date)
select soccer_team_id, stadium, fake_injuries, hair_wax, date
from cte
where row_no = 1