0

希望有人可以帮助我。我正在尝试通过 ODBC/ms 查询获取即将发布的标题列表(我从事出版工作)。我希望(除其他外)显示他们的内部状态(已批准、印前等)。数据库存储状态的更改日期。我似乎每个标题的每个状态都有一行。因此,如果标题已更改状态 6 次,我将得到 6 行。但我只想显示最新状态...

日期在 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
4

1 回答 1

0

这是一般的想法。您可以使用您的表和字段名称对其进行调整。

select somefields
from sometables
join
(select something, max(datetimefield) maxdt
from table1
where whatever
group by something ) temp on table1.datetimefield = maxdt
etc
于 2013-04-22T19:06:28.427 回答