我有与死亡有关的健康数据。个人最多应该死一次。在数据库中,他们有时不会;可能是因为更改了死因,但未删除原始条目。我真的不明白这是怎么被允许发生的,但它确实发生了。所以,作为一个虚构的例子,我有:
Row_number | Individual_ID | Cause_of_death | Date_of_death
------------+---------------+-----------------------+---------------
1 | 1 | Stroke | 3 march 2008
2 | 2 | Myocardial infarction | 1 jan 2009
3 | 2 | Pulmonary Embolus | 1 jan 2009
我希望每个人只有一个死因。
在示例中,我想要一个返回第 1 行和第 2 行或第 3 行(不是两者)的查询。我必须在第 2 行和第 3 行之间做出任意选择,因为在任何可用于确定哪个是修订版的字段中都没有时间戳;这并不理想,但不可避免。
我不能让 SQL 工作来做到这一点。我已经尝试将不同的 Individual_ID 内部连接到其他字段,但这仍然给出了所有行。我试过用它添加一个 'having count(Individual_ID) = 1' 子句。这完全排除了具有多个死因的人。互联网上的建议似乎是基于使用时间戳字段来选择最新的,但我没有。
IBM DB2。视窗XP。任何想法都感激不尽。