【发布时间】:2014-01-20 12:30:12
【问题描述】:
我在 MS SQL Server 2008 中有一个旧的旧表需要清理。表包含多个产品的每日行及其每日变化参数。填充表格的过程没有优化,并且每天都在重复行,只需要注意更改。
现在我已经修复了只插入更改值的日常程序,但现在我需要清理原始表。
我的计划是仅提取相关行(更改为 MIN(C) Group By B)并将它们插入新表并使用这个新表。我尝试使用 RANK() 但没有成功,Group By 不起作用,因为更改参数会随着时间的推移而重复。
这就是它的样子(A 列有多个值,123、345、567 等,所以它也需要在一个组中):
一个测试小提琴http://sqlfiddle.com/#!3/0da5a/3
A B C
123 0 20130101
123 0 20130102
123 1 20130103
123 1 20130104
123 0 20130105
123 2 20130106
123 2 20130107
123 2 20130108
123 0 20130109
123 3 20130110
123 3 20130111
123 3 20130112
预期结果是:
123 0 20130101
123 1 20130103
123 0 20130105
123 2 20130106
123 0 20130109
123 3 20130110
(编辑:将 A 列添加到预期结果)
【问题讨论】:
-
查看您的预期结果,A 列中的值是否无关紧要?
-
不,我忘记添加了。正如我在测试小提琴上方指定的那样,一列确实包含更多“产品 ID”。 t-clausen.dk 也正确地在 'partition by A' 中使用它。
标签: sql sql-server-2008 group-by