당신은 다음과 같이 LAG 함수를 사용하여 SQL 서버 2012을 사용하는 경우 :
SQL Server를 사용하는 경우 이에 대한 작업 예는
SQL Fiddle
에서 찾을 수 있습니다
SELECT *,
DATEDIFF(HH, TIME, LAG(TIME)
OVER (
ORDER BY TIME))
FROM TABLE1
2008 년 다음과 같이 자기 조인을해야합니다 :
SELECT *,
ROW_NUMBER()
OVER (
ORDER BY TIME)RN
INTO #TEMP1
FROM TABLE1
SELECT t1.*,
DATEDIFF(HH, t1.TIME, t2.TIME)
FROM #TEMP1 t1
LEFT JOIN #TEMP1 t2
ON t1.RN = t2.RN - 1
이것에 대해서는 SQL Fiddle에서 찾을 수 있습니다.
편집
이 같은 시도 hh:mm:ss
형식의 차이를 표시하려면 여기
SELECT *,
ROW_NUMBER()
OVER (
ORDER BY TIME)RN
INTO #TEMP1
FROM TABLE1
SELECT T.EMP_ID,
T.TIME,
T.[IN/OUT],
CASE WHEN DIFF/3600 <10 THEN '0' ELSE '' END + CAST(DIFF/3600 AS VARCHAR(
2)) +
':'
+ CASE WHEN DIFF%3600/60 < 10 THEN '0' ELSE '' END + CAST(DIFF%3600/60 AS
VARCHAR(2))
+ ':00' minutes
FROM (SELECT t1.*,
DATEDIFF(SECOND, t1.TIME, t2.TIME) diff
FROM #TEMP1 t1
LEFT JOIN #TEMP1 t2
ON t1.RN = t2.RN - 1)T
을 그리고 구체적으로 DBMS 무엇 SQL Fiddle
의 세 번째 버전입니다 이거? SQL 서버, MySql, 오라클 등 – Tanner
내가 항상 O를 따르는 것은 사실입니까? – exussum
우리는 dbms를 알게되자 마자 커서를 사용하는 방법을 제공 할 수 있습니다. 또는 응용 프로그램에서 이러한 유형의 집계를 수행하는 것이 더 나을 수도 있습니다. 하루에 한 번만 체크 인하면 솔루션을 얻을 수 있습니다. – booyaa