2016-07-26 20 views
-1

我有一個問題,即時通訊的一個項目GPS, 當路線車保存在我們的數據庫中的值= 1,但是當這種熄滅路線儲存在我們的數據庫中的值= 0,那麼我怎樣才能確定從SQL查詢路由的次數?算你多少次出口路線的車

這是我們臺的一個例子:

Example table with datas

然後,如果你看的知情同意,值1的車在途中和0的車是關閉的路線,我想算值的組,例如我的結果將是:

公路旁= 2(倍)

+1

請標籤符合正確的數據庫您的問題。 – sgeddes

+0

SQL Server 2008中 –

回答

1

有幾種方法可以做到這一點。根據您的數據庫上,有可能是一個更簡單的版本window functionsleadlag。不過,這應該是通用與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) 
+0

SQL Server 2008中 –

+1

@IsmaelRenteria - 不幸的是2008不支持'lead'或'lag',所以這可能是你最好的選擇... – sgeddes

0
;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 

我不想承擔ID是增量,所以我用ROW_NUMBER()。如果增量@sgeddes作品一樣好

0

如果你所需要的僅僅是次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這是很容易檢查,