这是Parent_Child表。
PARENT CHILD EFF_DATE
22716 2528 3/8/2011
22716 5696 3/8/2011
22716 3698 3/8/2011
22716 5698 3/18/2010
37091 4569 10/22/2013
37091 6931 9/17/2014
查询结果应如下所示:
PARENT CHILD EFF_DATE
22716 2528 3/8/2011
22716 5696 3/8/2011
22716 3698 3/8/2011
37091 6931 9/17/2014
查询已尝试:
SELECT DISTINCT P.PARENT,P.CHILD,C.MAX_DATE
FROM parent_child P
INNER JOIN
(SELECT CHILD,MAX(EFF_DT) AS MAX_DATE
FROM parent_child
GROUP BY CHILD) C
ON P.CHILD=C.CHILD AND P.EFF_DT=C.MAX_DATE
ORDER BY P.PARENT
但我最终得到了父37091的两个值。
感谢您的任何帮助。
答案 0 :(得分:1)
需要更改
- 将内部查询更改为父级而非子级
上的组- 更改连接条件以匹配父级
<强>查询强>
SELECT DISTINCT P.PARENT,P.CHILD,C.MAX_DATE
FROM parent_child P
INNER JOIN
(SELECT PARENT,MAX(EFF_DT) AS MAX_DATE
FROM parent_child
GROUP BY PARENT) C
ON P.PARENT=C.PARENT
AND P.EFF_DT=C.MAX_DATE
ORDER BY P.PARENT
;
<强>输出强>
PARENT CHILD MAX_DATE 22716 2528 March, 08 2011 00:00:00 22716 5696 March, 08 2011 00:00:00 22716 3698 March, 08 2011 00:00:00 37091 6931 September, 17 2014 00:00:00