【发布时间】:2015-10-25 20:24:18
【问题描述】:
我有按月输入的记录...这是当前查询提取全年结果的样子。请注意,这是一个 Oracle 数据库。
我的查询:
SELECT UMEMBERID, FIRSTNAME, LASTNAME, BIRTHDATE, PUBLICATIONDT
FROM MY_TABLE
WHERE INDENTIFIER IN ('GROUP1')
AND PUBLICATIONDT >= DATE'2014-01-01'
AND PUBLICATIONDT <= DATE'2014-12-31'
实际返回结果:
UMEMBERID | FIRSTNAME | LASTNAME | BIRTHDATE | PUBLICATIONDT
--------------------------------------------------------------
1 | John | Smith | 6/26/1983 | 11/20/2014
2 | Jane | Smith | 2/2/1980 | 11/21/2014
3 | Roger | Rabbit | 8/3/1982 | 11/20/2014
4 | Bugs | Bunny | 6/20/1983 | 11/19/2014
5 | Daffy | Duck | 4/3/1982 | 11/17/2014
6 | Winnie | Pooh | 2/27/1989 | 12/15/2014
7 | Jane | Doe | 8/5/1959 | 12/11/2014
5 | Daffy | Duck | 4/3/1982 | 12/9/2014
3 | Roger | Rabbit | 8/3/1982 | 12/9/2014
10 | John | Doe | 8/9/1992 | 12/18/2014
我的预期结果如下:
UMEMBERID | FIRSTNAME | LASTNAME | BIRTHDATE | PUBLICATIONDT
--------------------------------------------------------------
1 | John | Smith | 6/26/1983 | 11/20/2014
2 | Jane | Smith | 2/2/1980 | 11/21/2014
3 | Roger | Rabbit | 8/3/1982 | 12/09/2014
4 | Bugs | Bunny | 6/20/1983 | 11/19/2014
5 | Daffy | Duck | 4/3/1982 | 12/09/2014
6 | Winnie | Pooh | 2/27/1989 | 12/15/2014
7 | Jane | Doe | 8/5/1959 | 12/11/2014
10 | John | Doe | 8/9/1992 | 12/18/2014
如果您在实际返回的结果中注意到它为每只 Roger Rabbit(11/20/2014 和 12/09/2014)和 Daffy Duck(11/17/2014 和 12/09/2014)拾取了额外的记录。在我的预期结果中,我只想获取 12/09/2015 日期并显示 8 条记录。
【问题讨论】:
-
那么您想要其他四列的每个组合的最新(最大)
publicationdt?您是否尝试过使用 max 和 group-by ? (不过,如果其他列(除了键之外)具有重复值,则似乎您在此表中有非规范化数据)
标签: oracle duplicates distinct