在 DB2 中需要 Group by 的帮助

Need help in Group by in DB2

这是Parent_Childtable。

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 的两个值。

感谢任何帮助。

需要更改

  • change inner query to group on parent instead of child
  • change join condition to match on parent

查询

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

sqlfiddle