2015-05-09 48 views
0

這是Parent_Child表。在DB2中需要組中的幫助

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

可以創建一個sqlfiddle? – amdixon

+0

這裏是小提琴鏈接:http://sqlfiddle.com/#!9/603e0/1 – user2416710

+0

@amdixon以上是小提琴鏈接 – user2416710

回答

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