Sql 需要删除重复数据吗
下面是我通过两个临时表之间的简单联接获得的表。现在预期的结果有点难以解释,我甚至不知道从哪里开始。因此,我将发布预期结果,并回答可能出现的任何问题 编辑:基本上需要两列中的每个日期只显示一次Sql 需要删除重复数据吗,sql,sql-server,Sql,Sql Server,下面是我通过两个临时表之间的简单联接获得的表。现在预期的结果有点难以解释,我甚至不知道从哪里开始。因此,我将发布预期结果,并回答可能出现的任何问题 编辑:基本上需要两列中的每个日期只显示一次 +----+------------------+----------------+----------------------+----------- ---------+-----------------------+---------------------+ | ID | Date from
+----+------------------+----------------+----------------------+----------- ---------+-----------------------+---------------------+
| ID | Date from Source | Date to source | From Source Revision | To source Revision | From Source InstantID | To Source InstantID |
+----+------------------+----------------+----------------------+--------------------+-----------------------+---------------------+
| 45 | 2015-06-19 | 2015-07-06 | P0 | P0 | 1 | 3 |
| 45 | 2015-06-19 | 2015-07-09 | P0 | P0 | 1 | 5 |
| 45 | 2015-07-27 | 2015-07-06 | P0 | P0 | 6 | 3 |
| 45 | 2015-07-27 | 2015-07-09 | P0 | P0 | 6 | 5 |
| 45 | 2015-07-28 | 2015-07-06 | P0 | P0 | 7 | 3 |
| 45 | 2015-07-28 | 2015-07-09 | P0 | P0 | 7 | 5 |
| 45 | 2015-07-30 | 2015-07-06 | P0 | P0 | 8 | 3 |
| 45 | 2015-07-30 | 2015-07-09 | P0 | P0 | 8 | 5 |
+----+------------------+----------------+----------------------+--------------------+-----------------------+---------------------+
预期结果
+----+------------------+----------------+----------------------+--------------------+-----------------------+---------------------+
| ID | Date from Source | Date to source | From Source Revision | To source Revision | From Source InstantID | To Source InstantID |
+----+------------------+----------------+----------------------+--------------------+-----------------------+---------------------+
| 45 | 19-06-2015 | 06-07-2015 | P0 | P0 | 1 | 3 |
| 45 | | 09-07-2015 | P0 | P0 | | 5 |
| 45 | 27-07-2015 | | P0 | P0 | 6 | |
| 45 | 28-07-2015 | | P0 | P0 | 7 | |
| 45 | 30-07-2015 | | P0 | P0 | 8 | |
+----+------------------+----------------+----------------------+--------------------+-----------------------+---------------------+
试试这个:
DELETE FROM myTable WHERE Id IN (
SELECT Id FROM (SELECT Id
,ROW_NUMBER() OVER (PARTITION BY [Date from Source] ORDER BY [Date from Source]) AS [rn]
FROM myTable
) a WHERE rn > 1
)
您是否尝试使用Select Distinct语句?我可以看到源中日期的类型行,因为19Jun和27July完全相同,但即使如此,为什么19Jun有两行,而27July和其余都是单行?查看您的输出数据,似乎您需要使用游标来实现这一点。您实际上不需要选择除RN之外的所有其他数据,对吗?另外,
DELETE FROM CTE
会知道如何引用实际表格吗?CTE
不只是一个结果集吗?如果CTE
将有多个连接
,那么删除
将如何工作?嗨@RaduGheorghiu,如果我提到我的结果集中只需要两个日期列,这有什么关系吗?@crasster:-更新了!