所以这很可能是一个长镜头。
我有一张名为' 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'
答案 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这样的保留字来表示我的对象名称。