2015-01-07 3 views
0

나는 하나의 구매 거래 테이블과 하나의 판매 거래 테이블 만 가지고 분리 된 구매/판매 거래 테이블을 가지고있었습니다. 나는이 두 테이블에 다시 합류하여 제품이 동일한 곳에 판매와 매치를 매치시키고, 매수와 매도 사이의 실행 시간은 서로 10 ~ 30 초 사이에 있습니다.SQL의 30 초 시차에 기초한 테이블 합치기

두 테이블을 조인하고 DATEADD를 시간 단위로 사용하려고했지만 오류 메시지가 반환되었습니다.

이상적으로는 새로운 테이블에 buy 테이블과 sell 테이블의 모든 열을 포함 시키길 원하지만, 일치를 위해 필요한 열은 product와 execute_time 둘 다 있습니다.

오류 메시지는 내가 얻을 : - "invalid data type comparison in predicate"

ON b.product = a.product AND b.execution_time >= DATEADD(second, 30, a.execution_time) 

30 제 2 부분은 지금 십초보다 더 중요하다, 그것은 0-30 일 수있다.

+0

하나의 MySQL의 또는 SQL Server를? 태그를 올바르게 입력 했습니까? – HaveNoDisplayName

+0

오류 메시지 란 무엇이며 어떤 쿼리를 시도 했습니까? – Jim

+0

시도한 검색어를 추가 하시겠습니까? – HaveNoDisplayName

답변

3

당신이 원하는 결과를

MYSQL를 얻을 수 Sybase Datediff을 사용할 수 있습니다 : -

SELECT B.* 
from tblBuy B INNER JOIN tblSell S 
ON B.product = S.product 
Where TIME_TO_SEC(TIMEDIFF(B.execution_time ,S.execution_time)) BETWEEN 10 AND 30; 

SYBASE -

SELECT B.* 
from tblBuy B INNER JOIN tblSell S 
ON B.product = S.product 
Where DATEDIFF(SECOND, B.execution_time, S.execution_time) BETWEEN 10 AND 30; 
+0

응답을 감사하지만 내 실수였습니다. 나는 mysql이 아닌 sybase에서 sql을 사용하고있다. 불행히도 time_to_sec은 나를 위해 작동하지 않습니다. – nciaf

+0

@nciaf : 이전에 MYSQL 태그로 질문에 태그를 붙였습니다. 이제는 – HaveNoDisplayName

+0

을 변경했습니다. 제 실수라고 말했던 것처럼. 대용량 데이터 세트를 가진 친구를 도우려는 시도로 sql 또는 mysql 작업에 많은 시간을 할애하지 못했습니다. – nciaf