나는 SQL에서 매우 간단하다고 생각하는 것을 시도하고 있습니다. 이 솔루션을 살펴 보았지만 코드 열이 없기 때문에 내가 찾고있는 것과 완전히 동일하다고 생각하지 않습니다. 다음과 같은 테이블이 하나 있습니다 (다른 열이 있지만이 질문에 포함되지 않으므로 간결성을 위해 생략했습니다).
TABLE T1
ID | CODE | DATE | ...
------------------------------------------
0 | A1 | 2013-01-17 00:00:00 | ...
1 | A1 | 2014-02-01 00:00:00 | ...
2 | B5 | 2014-06-30 00:00:00 | ...
3 | C1 | 2013-12-01 00:00:00 | ...
4 | B5 | 2012-04-20 00:00:00 | ...
그런 다음 별도의 테이블에 다음과 같은 코드에 대한 정보가 있습니다.
TABLE T2
STARTDATE | ENDDATE | CODE | DESCRIPTION | ...
--------------------------------------------------------------------------
2012-01-01 00:00:00 | 2013-05-17 00:00:00 | A1 | No room | ...
2013-05-17 00:00:00 | 2014-12-31 00:00:00 | A1 | Not extra room | ...
2011-02-12 00:00:00 | 2013-12-31 00:00:00 | B5 | Lights | ...
2014-01-01 00:00:00 | 2014-08-11 00:00:00 | B5 | Lights (dim) | ...
기본적으로의 모든 코드는의 코드와 T1
일치 T2
하지만 해당 코드에 대한 설명은 날짜에 따라 변경됩니다. 그래서 내가 곤경에 처한 것은 T2
의 코드에 해당하는 설명을 찾는 T1
것이지만 올바른 범위에 있어야합니다 [STARTDATE, ENDDATE]
.
예를 들어 ID=0
in T1
은의 ID=1
날짜를 기준으로 "No room"이라는 설명이있는 반면 "Not extra room"이라는 설명이 있습니다 T1
.
편집 : 나는 정말로 이것을 필요 이상으로 어렵게 만들고 있다고 생각합니다. WHERE
절에서 다음과 같이 간단합니까?
WHERE T1.DATE >= T2.STARTDATE and T1.DATE <= T2.ENDDATE
이와 같은 검색어를 찾고 있습니까?
SELECT *
FROM T1
INNER JOIN t2 on t1.code = t.code and t1.date >= t2.startdate and t1.date <= t2.enddate
...
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다