このようなテーブルから時系列を取得する必要があります
TimeStamp(timestamp)、Datapoint(float)、Data_source(integer)
したがって、次のクエリは、ソース1によって記録されたすべてのデータを取得します。
SELECT *
FROM table
WHERE data_source = 1
では、data_source = 1が他のソースよりも優先されるようにするにはどうすればよいですか?すなわち。ダブルスは必要ありません。常にソース1からのデータポイントが必要ですが、利用できない場合は別のものを選択してください。
これは、すべての行のsource=1の量をカウントするサブクエリを使用して行いました。しかし、それは信じられないほど遅いです。これを行うための効率的な方法が必要ですか?ソース1は、ポイントの約3%でのみ使用できます。1つのポイントに他のソースが複数存在する場合がありますが、一般的には他のソースでもかまいません。
私はmssql2008を使用しています。したがって、T-SQLが優先されますが、この問題は非常に一般的だと思いますか?