我有一個問題根據SQL。數據庫是Firebird,但不應該太重要,因爲我希望儘可能使用ANSI標準。根據其他表格中的兩個日期選擇值?
我必須根據用戶資格和用戶分配該資格的日期(我希望這聽起來正確)選擇費率。我有看起來像這樣的表:
Usertable Variables Qualification Rapportcostrate Timeaccount
========= ========= ============= =============== ===========
UserId VarId QuaId RcrId TiaID
UserName VarUserId QuaName RcrName TiaValue
VarQuaId QuaRcrId RcrRate TiaDate
VarValidFrom TiaUserId
我現在需要得到的是這樣的:
UserName, RcrRate, TiaValue, TiaDate
我的問題是資格隨時可能發生變化,但如之前進入資格可能仍然有效。這應該在
RcrRate * TiaValue
基於在VarValidFrom
和TiaDate
值計算(或選擇)。我不能把它們放在一起! :-(
難道我讓自己清楚了嗎?我希望如此!請隨時隨時提問!
==編輯20h後==
我使用這個SQL命令此刻:
SELECT RcrRate, VarValidFrom, TiaValue FROM USERTABLE
JOIN VARIABLES ON UserId = VarUserId
JOIN QUALIFICATIONS ON VarQuaId = QuaId
JOIN RAPPORTCOSTRATE ON QuaRcrId = RcrId
JOIN TIMEACCOUNT ON UserId = TiaUserId
WHERE UserId = XYZ
現在讓我們假設表資格充滿了幾套
Qualifications Rapportcostrate
=============== ===============
1 Dummy 1 1 Value01 20
2 Testing 2 2 Value02 30
3 Another 3 3 Value03 40
4 FooBar 4 4 Value04 50
如果用戶XYZ在Variables
三個條目像
Variables
=========
1 1 1 2008-03-01
2 1 2 2009-04-01
3 1 3 2010-05-10
4 1 4 2013-12-12
預期的結果應該返回適合VarValidFrom
日至TiaDate
的RcrRate
。我想每TiaDate
只收到一行。
...這是相當努力,讓自己清楚...... ;-)
請發表一下你的代碼 –
顯示你已經嘗試了什麼,並對預期結果更具體。 –