0

我有一个字段样本数据集,其属性包括:样本名称、分析时间戳(唯一键)、分析结果、采样日期和一个布尔属性“重新运行”,该属性描述记录是否是第二次分析的结果同一个样本。这意味着可以有多个记录具有相同的样品名称和样品日期,但在这种情况下,第二条记录 (rerun = TRUE) 是选择的首选结果。

名称时间戳分析结果重新运行日期采样

我曾尝试使用 CASE 功能,但我认为我缺少一些简单的东西。我试图把它作为 WHERE 子句的一个元素,但这不是按原样工作的。

例如,我正在尝试类似:

    SELECT name,analysisResult
    FROM sciencyTable
    WHERE date = '12/02/11',
    AND (some working CASE function)
    ORDER BY time;

任何提示将不胜感激。谢谢你。

4

1 回答 1

1

查询的一种解决方案是针对重新运行的样本进行外部连接并合并:

select
  firstruns.name
, coalesce(reruns.analysisResult, firstruns.analysisResult) as analysisResult
from
(select name, dateSampled, analysisResult
 from sciencyTable
 where not rerun
) as firstruns
left join
(select name, dateSampled, analysisResult
 from sciencyTable
 where rerun
) as reruns
using (name,dateSampled)

如果您对给定的名称、日期有多次重新运行并想选择最新的,您应该尝试窗口函数

于 2012-11-09T18:03:52.570 回答