我的下表中包含所显示的数据:
send_date | household_ID
-------------------------
11-20-2014 | 123
11-20-2014 | 456
11-15-2014 | 789
我需要做两件事:
1)计算send_date的最大值
2)过滤掉send_date与该值不匹配的任何行
换句话说,我希望输出为:
send_date | household_ID
-------------------------
11-20-2014 | 123
11-20-2014 | 456
第3行应该被过滤掉,因为它的send_date不是最大值
我尝试创建聚合,按所有列分组,并创建一个名为MAX_DATE
的新输出端口,其表达式为MAX(SEND_DATE)
,然后进行条件为MAX_DATE = SEND_DATE
<的过滤器转换/ p>
但是,这可以让所有行都通过。我能做些什么才能做到这一点......
答案 0 :(得分:1)
MAX_DATE
值。SEND_DATE
列的第二个源限定符中加入数据。 答案 1 :(得分:1)
我认为,解决问题的最简单方法是使用RANK转换。 优点: - SQ没有分裂 - 聚合后没有连接 - 简单:) 转型排名上/下(根据您的配置;您需要选择&#34; Top&#34;) 因此,它将通过整行,然后最大的send_date值将被排名为1。 下一步是过滤排名大于1的所有行。
答案 2 :(得分:-1)
你确定这不是你想要的吗?
SELECT * FROM `table` WHERE `send_date` <> (SELECT MAX(`send_date`) FROM `table`)
或者,如果我误解了你,那么:
SELECT * FROM `table` WHERE `send_date` = (SELECT MAX(`send_date`) FROM `table`)