2013-04-22 65 views
0

希望有人可以帮助我解决这个问题。我试图通过ODBC/ms查询来提取即将推出的标题列表(我在发布中工作)。我希望(除其他外)显示其内部状态(批准,印前等)。数据库存储状态的更改日期'。我似乎每个标题的每个状态都有一行。所以如果标题6次改变状态,我会得到6行。但我只想显示最新状态...需要只存储表中存储更改日期的最后日期SQL/ODBC

日期在BL_PROJECT_TO_STATUS.STATUS_DATE(我在下面插入了一个日期标准,只是为了使其更加明显)。

如何才能做到这一点?我对ODBC很陌生,会很感激。

SELECT DISTINCT 
    BL_PROJECT.EXP_PUB_DATE, BL_PROJECT.EAN, BL_PROJECT.TITEL, 
    MEDIATYPE.DESCRIPTION, BL_PROJECT_STATUS.DESCRIPTION 
FROM 
    FIRMA1.BL_PROJECT BL_PROJECT, FIRMA1.BL_PROJECT_STATUS BL_PROJECT_STATUS, 
    FIRMA1.BL_PROJECT_TO_STATUS BL_PROJECT_TO_STATUS, FIRMA1.MEDIATYPE MEDIATYPE 
WHERE 
    BL_PROJECT.PROJECT_ID = BL_PROJECT_TO_STATUS.PROJECT_ID AND 
    BL_PROJECT_TO_STATUS.STATUS_ID = BL_PROJECT_STATUS.CODE AND 
    BL_PROJECT.MEDIATYPE = MEDIATYPE.ID AND 
    ((BL_PROJECT.PROJECT_TYPE = 2) AND 
    (BL_PROJECT.EXP_PUB_DATE Between SYSDATE AND (SYSDATE+90)) AND 
    (BL_PROJECT_TO_STATUS.STATUS_DATE = {ts '2013-11-20 00:00:00'})) 
ORDER BY 
    BL_PROJECT.EXP_PUB_DATE, BL_PROJECT.EAN, BL_PROJECT.TITEL 

回答

0

这是一般的想法。你可以调整它与你的表和字段名称。

select somefields 
from sometables 
join 
(select something, max(datetimefield) maxdt 
from table1 
where whatever 
group by something) temp on table1.datetimefield = maxdt 
etc