2017-06-05 14 views
1

我每隔10分鐘的間隔時間都有點火狀態10
如何獲得不同的價值就像我不會重複1和0號
當它的1與日期時間,然後在下一個0將顯示,然後接下來的1將顯示SQL服務器中不同的二進制數

 

    ignition status date time 
    1     2017-06-04 00:00:13.000 
    0     2017-06-04 02:36:29.000 
    1     2017-06-04 07:43:52.000 
    0     2017-06-04 23:56:18.000 
query 
select top 100 ignitionstatus,datetime from rawdata 
actual output 
ignitionstatus stringdatetime 
1    2017-05-26 17:17:50.000 
1    2017-05-26 17:18:10.000 
0    2017-05-26 17:18:30.000 
1    2017-05-26 17:18:50.000 
0    2017-05-26 17:19:30.000 
1    2017-05-26 17:19:10.000 
1    2017-05-26 17:20:10.000 
we required 
1    2017-05-26 17:17:50.000 
0    2017-05-26 17:18:30.000 
1    2017-05-26 17:18:50.000 
1    2017-05-26 17:19:10.000 
+2

所以是你展示什麼我們*樣本數據*或*預期的結果*?這個問題將通過具有*兩個*來顯着改善。 –

+0

從日期時間刪除時間部分。例如:case(datetime_Col As DATE) –

+1

顯然你想[標記'點火狀態改變]的記錄(https://stackoverflow.com/a/32172037/11683)並且只顯示它們。 – GSerg

回答

1

像這樣的事情? (從評價中提供的查詢以表名和列名:select ignitionstatus,stringdatetime from processedrawdata)此使用的CTE和ROW_NUMBER到連續整數序列添加到行:

WITH numbered_ignition_states AS 
(
    SELECT row_num = ROW_NUMBER() OVER (ORDER BY stringdatetime), 
      ignitionstatus, 
      stringdatetime 
    FROM  processedrawdata 
    ORDER BY stringdatetime 
) 
SELECT i1.ignitionstatus, i1.stringdatetime 
FROM numbered_ignition_states i1, numbered_ignition_states i2 
WHERE i1.row_num = 1 OR i1.row_num = i2.row_num + 1 AND i1.ignitionstatus != i2.ignitionstatus; 

原始建議,提供的更多信息之前,假設該表稱爲ignition_states,它具有連續的整數主鍵列id

SELECT i1.ignition_status, i1.date_time 
FROM ignition_states i1, ignition_states i2 
WHERE i1.id = 1 OR i1.id = i2.id + 1 AND i1.ignition_status != i2.ignition_status; 

+0

選擇ignitionstatus,從processedrawdata ignitionstatus \t stringdatetime 2017年5月26日17 stringdatetime:17:50.000 2017年5月26日17:18:10.000 2017年5月26日17:18:30.000 2017-05-26 17:18:50.000 2017-05-26 17:19:30.000 2017-05-26 17:19:10.000 2017-05-26 17:19: 51.000 2017-05-26 17:20:10.000 – wasim

+2

@wasim - 請勿將樣本數據作爲評論發佈。請*編輯*您的問題(並將其格式化爲GSerg的預期輸出),以便它*可讀*。 –

相關問題