私はプロジェクトのGPS、 に質問があります私たちのデータベースに値を格納すると、値は1ですが、 = 0、どのように私はSQLクエリからルートの外の回数を決定することができますか?あなたが何回車を出る回数をカウントするか
これが私たちのテーブルの例である:
あなたは写真を見ればその後、値1車がルート上にあり、0車がルートから外れている、私は例えば、値のグループをカウントしたいです私の結果は次のようになります。
ルート= 2(回)
私はプロジェクトのGPS、 に質問があります私たちのデータベースに値を格納すると、値は1ですが、 = 0、どのように私はSQLクエリからルートの外の回数を決定することができますか?あなたが何回車を出る回数をカウントするか
これが私たちのテーブルの例である:
あなたは写真を見ればその後、値1車がルート上にあり、0車がルートから外れている、私は例えば、値のグループをカウントしたいです私の結果は次のようになります。
ルート= 2(回)
オフこれを行うには、いくつかの方法があります。データベースによっては、lead
やlag
など、より簡単なバージョンのwindow functions
があるかもしれません。しかし、これはexists
と総称する必要があります:
select count(y1.id)
from yourtable y1
where y1.value = 0 and exists (
select 1
from yourtable y2
where y2.id = y1.id - 1 and y2.value = 1)
Sql Server 2008 –
@IsmaelRenteria - 残念ながら2008年は 'lead'または' lag'をサポートしていないので、これはおそらく最善のオプションです... – sgeddes
;with cteBase as (
Select *,RowNr = Row_Number() over (Order by ID) From YourTable
)
Select A.*
From cteBase A
Join cteBase B on (A.RowNr=B.RowNr+1 and A.Value=0 and B.Value=1)
戻り
ID Value RowNr
4 0 4
6 0 6
私はROW_NUMBER()を使用してIDが増分したと仮定したくありませんでした。増分@sgeddesは、同じようにうまく動作している場合
何が必要倍Value
のちょうど数がオフルートとして、次のクエリしようと国道上のように1と0である場合:
select
sum(Value) as [On_route],
sum(abs(Value-1)) as [Off_Route]
from GPSTable
abs(Value-1)
は、本質的に0に隠れ家を1と1から0にチェックするのが簡単です
あなたの質問に正しいデータベースを付けてください。 – sgeddes
Sql Server 2008 –