我有一個問題,即時通訊的一個項目GPS, 當路線車保存在我們的數據庫中的值= 1,但是當這種熄滅路線儲存在我們的數據庫中的值= 0,那麼我怎樣才能確定從SQL查詢路由的次數?算你多少次出口路線的車
這是我們臺的一個例子:
然後,如果你看的知情同意,值1的車在途中和0的車是關閉的路線,我想算值的組,例如我的結果將是:
公路旁= 2(倍)
我有一個問題,即時通訊的一個項目GPS, 當路線車保存在我們的數據庫中的值= 1,但是當這種熄滅路線儲存在我們的數據庫中的值= 0,那麼我怎樣才能確定從SQL查詢路由的次數?算你多少次出口路線的車
這是我們臺的一個例子:
然後,如果你看的知情同意,值1的車在途中和0的車是關閉的路線,我想算值的組,例如我的結果將是:
公路旁= 2(倍)
有幾種方法可以做到這一點。根據您的數據庫上,有可能是一個更簡單的版本window functions
如lead
和lag
。不過,這應該是通用與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
我不想承擔ID是增量,所以我用ROW_NUMBER()。如果增量@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中 –