2016-11-02 2 views
0
.... 그럼 난 또 다른 하나는 "거래"TXID, txDate, 직불 카드, 신용와

SQL보기에는 링크가없는 두 개의 테이블을 조인하는

불렀다 PeriodID, FROMDATE, TODATE와

...이 테이블은 특정 프로그램을위한 준비가되어 있으며 변경할 수 없습니다.

그렇다면 Transaction에서 txDate를 사용하여 기간 테이블을 검색하는 방법이 있는지 알고 싶습니다. 그러면 txDate가 특정 기간의 fromDate와 toDate 사이에있는 경우 트랜잭션을 결합한보기를 원합니다. PeriodID를 추가합니다.

+3

두 테이블의 샘플 데이터와 원하는 결과를 제공하십시오. – GuidoG

답변

0

샘플 데이터가 없으면 이러한 질문에 대답하기가 항상 어려울 수 있습니다. 그러나 내가 올바르게 이해했다고 가정하면 ...

between을 사용하여이 두 테이블을 결합 할 수 있습니다.

이 가입은 거래 날짜를 포함하는 기간을 반환합니다.

-- Join without a matching field. 
SELECT 
    * 
FROM 
    [Transaction] AS t 
     INNER JOIN [Period] AS p  ON t.txDate BETWEEN p.fromDate AND p.toDate 
; 
+0

네, 저를 정확하게 이해했습니다. 이것이 제가 원했던 것입니다. –

0

시험해보십시오. 궁금한 점이 있습니까?

SELECT * 
FROM Transaction 
WHERE EXISTS 
(
SELECT 1 FROM Period WHERE txDate BETWEEN fromDate AND ToDate 
) 
+0

하위 쿼리의 외부 쿼리를 참조 할 때주의하십시오. 이를 [상관 하위 쿼리] (https://en.wikipedia.org/wiki/Correlated_subquery)라고합니다. SQL Server는 외부 쿼리에서 반환 된 모든 행에 대해 한 번 하위 쿼리를 다시 평가해야하므로 이러한 유형의 쿼리는 성능을 저하시킬 수 있습니다. –

관련 문제