在訪問我用這個虛擬表(表1),我想更新與下面顯示的邏輯表2的領域的最新值。例如,對於ID = 1倍的所有的FIELD2表2中的值的值應爲10,而日期是< 1/1/2015和在該日期之後的所有值的值應爲8等。選擇基於某一特定日期
Table1
ID field1 reviewDate
1 10 1/1/2014
1 8 1/1/2015
2 5 3/3/2013
2 6 4/4/2014
2 4 5/5/2015
Table2
ID field2 Date
1 10 1/1/2014
1 10 2/1/2014
. . .
. . .
1 8 1/1/2015
我試過select語句,而不是第一個看到我多麼接近我理想的結果,它是:
select a.ID, field1, max(reviewDate) as max , b.Date
from table1 a
inner join table2 b
on a.ID=b.ID
and b.Date >=a.reviewDate
group by ID,field1,reviewDate,Date
order by a.ID,b.Date
的問題顯然是,當日期大於同一個ID的reviewDates同時返回兩個值。我只想要當代。例如,在指定日期ID = 1 = 2 /2015分之1域2 = 8只,但在我的日期腳本= 2 /二千零十五分之一我有兩個記錄10和8
我想跑,但我收到此錯誤信息: – kostas
@kostas「最多一個記錄可以通過這個子查詢返回」。 。 。這意味着給定的'id'可以有多個審閱日期。爲了解決這個問題,我在'order by'中添加了'field1'。但是,獨特的行將是最好的方法。 –
這是正確的。現在,當我運行更新後的腳本時,會發生以下奇怪的事情。該腳本成功執行,正常提供數據表結果,並在幾秒鐘後彈出相同的錯誤消息「該子查詢最多可以返回一條記錄」擦除表中的每個值..你剛剛打破Access Gordon?:) – kostas