0
我正在嘗試執行一些我認爲在SQL中相當簡單的操作。我看過this solution,但我不認爲它與我正在尋找的完全一樣(因爲我沒有代碼欄)。我有一個表,看起來像這樣(還有其他列,但他們並不因素這個問題,所以我已經忽略他們爲了簡潔):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
在T1
將有描述「沒有空間」,而ID=1
將有描述「不是多餘的房間」的基礎上,T1
日期。
編輯:我真的覺得我比這更難。是否如WHERE
條款那樣簡單:
WHERE T1.DATE >= T2.STARTDATE and T1.DATE <= T2.ENDDATE
是的,謝謝。我用那個確切的東西編輯了我原來的帖子,哈哈。我一整天都在盯着其他東西的文檔,真的是太複雜了。 – TheOriginalBMan