我想製作一個SQL語句來從數據庫中提取樣本值。該表格包含與CNC機牀中刀具更換有關的值。當前的語句我已經正確地提取了值,但是隻有當某個給定程序中有一個該工具發生時。如果該工具出現多次,則時間值對應於第一次加載到最後一次加載。只有一個TIME列,通過查找它的第一次和最後一次出現,我可以確定一個工具進/出時間。SQL查詢按時間對項目進行分組,但僅在彼此靠近時才分組?
基本例如:
Raw Data:
Tool_Number TIME
100 12:00
100 12:01
100 12:02
100 12:03
Current Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:03
事情會很麻煩當工具出現多次,雖然,因爲我不能再利用TOP和DISTINCT規則。
Raw Data:
Tool_Number TIME
100 12:00
100 12:01
100 12:02
100 12:03
200 12:04
200 12:05
100 12:06
100 12:07
Current Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:07
200 12:04 12:05
Ideal Query Returns:
Tool_Number TIME_IN TIME_OUT
100 12:00 12:03
200 12:04 12:05
100 12:06 12:07
我們正在做時間分析,當然這嚴重地搞亂了總的時間值。 當前查詢:
SELECT * FROM (SELECT DISTINCT SPINDLE_POT FROM TBL_SPINDLE_DATA_M1
WHERE TIME BETWEEN '4/3/20131:24:13 PM' AND '4/3/2013 3:07:33 PM') AS A
CROSS APPLY
((SELECT TOP 1 TIME FROM TBL_SPINDLE_DATA_M1 B WHERE B.SPINDLE_POT = A.SPINDLE_POT AND
TIME BETWEEN '4/3/2013 1:24:13 PM' AND '4/3/2013 3:07:33 PM') AS NEWTABLE1
JOIN
(SELECT TOP 1 TIME FROM TBL_SPINDLE_DATA_M1 B WHERE B.SPINDLE_POT = A.SPINDLE_POT
AND TIME BETWEEN '4/3/2013 1:24:13 PM' AND '4/3/2013 3:07:33 PM' ORDER BY TIME DESC)
AS NEWTABLE2 ON (0=0))
我絕不是任何種類的SQL查詢專家!上面的查詢可能是非常錯誤的,但事實上它返回了我需要的東西。無論如何都要將類似的項目分組,但是如果他們的指標不相互接觸,那麼他們是否足夠司法,不能將他們分組?
我假設SQL Server由於使用了'APPLY',但你應該確保你標記你的問題與適當的數據庫。 – Taryn 2013-04-04 18:11:52
謝謝,我也在使用SQL 2012。代碼已更新。 – 2013-04-04 18:13:46
值是什麼標準被視爲兩個單獨的「批」而不是一個?兩者之間是否必須沒有時間差距,即只要條目以連續方式出現(分鐘),條目就被視爲一個批次?還是說它們之間不能有任何其他工具條目(按時間順序)? – 2013-04-04 18:19:42