在DB2中的Group by方面需要帮助

时间:2015-05-09 10:04:50

标签: group-by db2

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

感谢您的任何帮助。

1 个答案:

答案 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

sqlfiddle