【发布时间】:2011-10-25 20:01:46
【问题描述】:
我需要在这个查询的结果中添加一个带有 MAX 函数的过滤器;
SELECT a.INTEGER_0, a.INTEGER_1, a.DATE_0, a.DATE_1, a.INTEGER_2
FROM TABLE_A a
INNER JOIN
(SELECT b.INTEGER_0, b.INTEGER_1, b.DATE_0, max(b.DATE_1) AS max_date
FROM TABLE_A b
GROUP BY b.INTEGER_0, b.INTEGER_1, b.DATE_0
) AS result
ON a.INTEGER_0 = b.INTEGER_0
AND a.INTEGER_1 = b.INTEGER_1
AND a.DATE_0 = b.DATE_0
AND a.DATE_1 = b.max_date
没关系!!但我需要过滤结果max(INTEGER_2)。
我尝试了另一个 INNER JOIN,但结果很糟糕!
其他信息
行:
1,7,'2011-02-01','2011-01-01',8
1,7,'2011-02-01','2011-01-02',7
1,7,'2011-02-01','2011-01-04',6
1,7,'2011-02-01','2011-01-04',3
1,7,'2011-02-01','2011-01-04',3
正确结果:
1,7,'2011-02-01','2011-01-04',6
【问题讨论】:
-
定义一个“坏”的结果?能否给出样本数据和预期输出?
-
很多很多行:P 我需要使用 max(b.INTEGER_2) 从结果中过滤,因为如果我将 max(b.INTEGER_2) 添加为 max_int_2 并添加到 ON -> AND a.INTEGER_2 = b .max_int_2 我用 b.max_date 丢失了一些行,因为 INTEGER_2 列在某些情况下包含错误数据...谢谢回答!
标签: sql postgresql inner-join