之前遇到一个去除重复行的问题。即逻辑主键重复,且内容有可能不同时,取某一列最大的那个,如果这样还重复,就随机取一条。
gourp by只能做到取最大的,但是另外一点就做不到。
在SSIS里面,可以用aggregator groupby 逻辑主键,取出最大值的那个列,然后lookup原表。系统自动随机选择一条匹配的(Informatica里面可以配置成lookup随机选择一条)。就不像join会出现笛卡尔积。
今天查partition终于查到SQL的方法。看起来比工具的更简练。
select * from
(
select Player, Year, HomeRuns, Rank() over (Partition BY Player order by HomeRuns DESC, Year DESC) as Rank
from
Batting
) tmp
where Rank = 1
代码转自:
http://weblogs.sqlteam.com/jeffs/archive/2007/03/28/60146.aspx