2011-01-25 190 views
1

我有兩個表,與時表A,表B有等級,和最小的時間段所需MS Access 2003中:檢查數據從另一個表範圍內

我試圖做的是根據每個記錄有多少小時將TableB.Grade分配給TableA。

例子:

表A

Name  Hours  
Person A  205 
Person B  105 
Person C  400 

表B

Grade  HoursRequired 
1    0 
2    100 
3    200 
4    300 

我的預期報告

Name  Hours  Grade 
Person A 105  2 
Person B 205  3 
Person C 400  4 

上表的SQL編碼或重組的任何的建議是讚賞。

回答

0

我喜歡@ Andomar的建議。但是,如果子查詢迷惑你,你可以修改表B這樣的:

Grade low_end high_end 
1   0   99 
2   100  199 
3   200  299 
4   300 2147483647 

然後用這個查詢:

SELECT a.person_name, a.hours, b.Grade 
FROM TableA AS a, TableB AS b 
WHERE (((a.hours) Between [b].[low_end] And [b].[high_end])) 
ORDER BY a.person_name; 

名稱是保留字,所以我重新命名您的姓名字段PERSON_NAME。

+0

非常感謝!我以前不得不將該報告導出爲ex​​cel並使用marco來獲得結果! – KenC 2011-01-25 18:31:39

1

你可以使用子查詢:

select A.Name 
,  A.Hours 
,  (
     select top 1 grade 
     from TableB B 
     where B.HoursRequired <= A.Hours 
     order by 
       B.HoursRequired DESC 
     ) as Grade 
from TableA A 
+0

非常感謝您的幫助@Andomar,如果您能幫助我解決問題的延伸,那將非常棒!我將它發佈到@HansUp的第二回復。 – KenC 2011-01-25 19:30:01

相關問題