SQL最新条目

时间:2014-04-01 20:35:27

标签: sql sql-server

所以这很可能是一个长镜头。

我有一张名为' Case'具有主键' Case_ID'。在另一个名为' CaseStatus'有一个名为' value'的列它只有待处理,研究等项目。

我的问题是,每次状态更新,我都会重复' Case_ID'

如何选择最新条目(基本上显示当前'状态')?

没有日期,但两个表共享名为' Last_Mod_Date'的列。我不确定这是否有帮助。我已经在这里进行了大量的搜索,大多数人都在寻找像MAX DATE这样的东西,但我的大脑并不想因某些原因而工作,我无法连接点。

我感谢大家的帮助。我修好了。我发布它但是在没有看到整体图片的情况下可能没有意义......这是我认为的相关部分:

where
B.[CASE_ID] = A.CASE_ID
and B.LAST_ONE = 'Y'
and C.[TYPE] = 'STATUS'
and [DIS].[TYPE] = 'DISPOSITION'

2 个答案:

答案 0 :(得分:0)

在CaseStatus表中,您需要添加状态更改日期。没有它,你就没有可靠的方法来获得最新状态。

另一种选择是在更改状态时使用UPDATE而不是INSERT。这样,每个案例ID总会有一行。

答案 1 :(得分:0)

这将为您提供一行案例和一个案件状态。

select *
from [CASE] C
inner join 
    (select cs.CASE_ID, cs.Status
    from CaseStatus cs
    where C.[TYPE] = 'STATUS'
    and cs.CaseStatus_ID in
        (select max(s.CaseStatus_ID) maxID
        from CaseStatus s
        where s.[TYPE] = 'STATUS'
        group by s.CASE_ID)) as cs
on c.Case_ID = cs.Case_ID

通常,您只有一个CASE.CaseStatusID列可以保存最新状态,然后您可以使用触发器来捕获历史记录(如果您需要它)。另外,我会远离使用像CASE这样的保留字来表示我的对象名称。