IT Gourmet
数据仓库, ETL的笔记

之前遇到一个去除重复行的问题。即逻辑主键重复,且内容有可能不同时,取某一列最大的那个,如果这样还重复,就随机取一条。

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

posted on 2011-12-29 16:38  ImToffee  阅读(221)  评论(0编辑  收藏  举报