2012-05-15 11 views
0

나는 3 개의 열을 포함하는 SQL 서버에 데이터 테이블을 가지고 있습니다. 첫 번째는 DateTime이고 두 번째는 & 세 번째는 모두 부동입니다. 메신저는 특정 시간 간격, 즉 매 15 분 간격으로 칼럼 2와 칼럼 3의 차이의 평균을 계산하려고합니다. 특정 시간 간격 동안 두 열 사이의 차이

나는 다음과 같은 예를

SELECT * FROM dbo.data 
WHERE CAST(DateTime AS TIME) BETWEEN '14:00' and '14:30' 

을 찾을 이제 위의 쿼리의 결과에서 2 층과 3 열 사이의 차이를 CALC하는 방법을 확실하지 메신저 수 있었다. 누군가가 C#에서 이것을 수행하는 것이 더 적절하다고 생각하지 않는 한 이드는 t-sql에서 이것을 수행하는 것을 선호합니다.

감사

편집

2010-01-04 14:30:00.0000000 1.44377 1.44386 
2010-01-04 14:30:00.0000000 1.4438 1.44389 
2010-01-04 14:30:00.0000000 1.44377 1.44386 
2010-01-05 14:00:01.0000000 1.44258 1.44267 

그냥 여러 날짜하게 될 겁니다 TIME 같은 날짜 열을 시전하면

0.00009 ie 1.44386 - 1.44377 
0.00009  1.44389 - 1.4438 
0.00009  1.44386 - 1.44377 
0.00009  1.44267 - 1.44258 

답변

1

을 다음과 같은 결과 ID가 될 것이다, 나는 당신의 의도라고 생각하지 않는다. (내가 무엇을 의미 하는지를 설명하기 위해 아래 첫 번째 쿼리의 결과를 참조)

DECLARE @Date DATETIME 
SELECT @Date = '05/15/2012 14:15' 
SELECT CAST(@Date AS TIME) 
SELECT @Date = '04/15/2012 14:15' 
SELECT CAST(@Date AS TIME) 

나는 당신이 원하는 쿼리는 다음과 같은 생각 :

SELECT 
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date])/15), 0), -- Assuming [Date] is the DATETIME column, this will give you 15 minute intervals 
    AVG([Col2] - [Col3]) 
FROM 
    dbo.data 
GROUP BY 
    DATEADD(MINUTE, 15 * (DATEDIFF(MINUTE, 0, [Date])/15), 0) 

당신이 당신 WHERE 절에 강제, 특정 시간 프레임을 검색하려면 : 난 그냥보고

SELECT 
    AVG([Col2] - [Col3]) 
FROM 
    dbo.data 
WHERE 
    [Date] BETWEEN '05/15/2012 14:00' AND '05/15/2012 14:30' 
+0

당신의 편집하다. 데이터로부터 9의 결과에 어떻게 도달하는지 설명 할 수 있습니까? – diaho

+0

1.44386 - 1.44377 = 0.00009 (원래 게시물에 십진수를 포함하도록 수정했습니다.) –

+0

마지막 명령이 작동합니다. id가 내 날짜와 실수를 저 지르 았습니다. 당신의 도움을 주셔서 감사합니다. –