0

サンプル名、分析のタイムスタンプ(一意のキー)、分析結果、サンプリングされた日付、およびレコードが2番目の分析の結果であるかどうかを説明するブール属性「再実行」を含む属性を持つフィールドサンプルのデータセットがあります。同じサンプル。これは、同じサンプル名とサンプル日付を持つ複数のレコードが存在する可能性があることを意味しますが、その場合、2番目のレコード(rerun = TRUE)が選択の優先結果になります。

名前タイムスタンプanalysisResult再実行dateSampled

CASE関数を使おうとしましたが、何か簡単なものが欠けていると思います。WHERE句の要素として配置しようとしていますが、そのままでは機能しません。

たとえば、私は次のようなことを試みています:

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

ヒントをいただければ幸いです。ありがとうございました。

4

1 に答える 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 に答える