sql删除重复数据

时间:2013-04-05 19:23:08

标签: sql sql-server-2008

我对需要过滤以生成报告的数据有疑问。

基本上每天我们都会收集一个文件并将其加载到系统中,但文件是累积文件,基本上每天都会导入相同的信息和新数据。

这将数据库加载到两个表中,即标题和详细信息表。

在标题表中,我有No_的密钥字段,导入的日期以及数据用于(期间)的月份和年份,例如“Apr2013”​​。

详细表格包含您可以想象的导入的所有信息。

我要做的是忽略所有旧数据,只查看该月的最新导入。

希望有人可以帮助我,如果您希望我发布任何示例数据或任何内容,请告诉我,我会将其添加进来。

提前致谢!

菲尔

1 个答案:

答案 0 :(得分:0)

如果您无法改变流程以反复停止重复导入相同的数据 - 特别是如果数据 完全相同 - 您可以尝试以下查询:

WITH MostRecentData AS
(
    SELECT MAX(dateImported) dateImported, month, year
    FROM header
    GROUP BY month, year
)
SELECT ...
FROM detail d
INNER JOIN header h ON h.[key] = d.[key]
INNER JOIN MostRecentData r ON h.month = r.month AND h.year = r.year 
    AND h.dateImported = r.dateImporter

这将为每个月和每年提取最新的行(基于导入的日期)。

老实说,如果可能的话,我会尝试更改导入过程。这听起来像是浪费了很多空间,后续处理来提取你想要的数据。