0

두 개의 테이블이있는 경우. 하나는 판매 테이블이고 다른 하나는 이벤트 테이블입니다.SQL Server 2008에서 일부 데이터를 선택하는 방법은 무엇입니까?

판매 테이블 :

Date  Item Qty 
2014-10-01  A  2 
2014-10-01  B  3 
2014-10-05  A  5 
2014-10-10  A  2 
2014-10-11  A  2 
2014-10-19  A  3 
2014-10-19  B  6 
2014-10-25  A  2 
2014-10-25  B  1 
2014-10-30  B  4 

및 이벤트 테이블 :

Event  Begin_Date  End_Date 
Holiday  2014-10-01  2014-10-03 
Holiday  2014-10-10  2014-10-13 
Month Sale 2014-10-29  2014-10-30 

방법 이벤트 기간에만 판매를 선택할 수 있습니다? 예에서

, 휴가 이벤트 결과는 다음과 같다 :

Date  Item Qty 
2014-10-01  A  2 
2014-10-01  B  3 
2014-10-10  A  2 
2014-10-11  A  2 
+0

판매 테이블에 기본 키가 있습니까? 그렇다면 무엇입니까? – DavidG

+0

판매 테이블의 기본 키는 날짜와 항목입니다. – user2265229

+0

왜 결과에 '2014-10-05'이 없습니까? – Wanderer

답변

0

날짜에 가입하면 중복 이벤트가있는 경우 당신은을 사용하는 것

SELECT S.* 
FROM Event E 
JOIN Sales S on S.Date Between E.Begin_Date and E.End_Date 
where E.Event='Holiday' 

--edit 다음과 같이 별개의 키워드 :

+0

중복 된 날짜와 함께 작동하지 않음 – DavidG

+0

중복 된 이벤트가있는 경우 겹치는 이벤트에 대해 여러 결과가 반환되지만 단순한 별개 이벤트는 편집을 참조하십시오. – Hedinn

0

답변이 몇 분 게시되었습니다. 등은 혼자서 제거되었습니다. 나는 그것이 작동하고있는 것을 점검했다. (별개의 키워드를 제외하고 같은 대답은)

SELECT a.* 
    FROM #sales a 
      JOIN #event b 
      ON a.mydate BETWEEN b.begin_date AND b.end_date 
    WHERE b.event = 'Holiday' 
+0

겹치는 이벤트를 처리하려면 distinct 키워드가 중요합니다 – DavidG

0
SELECT * 
FROM SALES 
WHERE (DATE BETWEEN 
        (SELECT BEGIN_DATE FROM EVENT) 
       AND 
        (SELECT END_DATE FROM EVENT)) 
AND EVENT.EVENT = 'HOLIDAY'