查找范围内的值

时间:2016-11-22 10:57:11

标签: sql ms-access subquery lookup

SQL新手在这里。我试图使用Between函数从AgeBrackets表中获取基于Age at List的相应年龄类别。

GetAgeCategory查询:

SELECT TRANSACTIONS.ACCOUNT_NUM,  TRANSACTIONS.Age at List, Age Category.AgeBrackets 
FROM TRANSACTIONS, AgeBrackets
WHERE 
(((TRANSACTIONS.Age at List) Between [AgeBrackets].FROM and [AgeBrackets].TO)); 

我对TRANSACTIONS表进行了计数,与GetAgeCategory查询相比,该表上有更多记录。由于某种原因,查询将从TRANSACTIONS表中排除记录。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的选择查询语法不是MS访问的SQL语法,并且您对Age的定义未正确制定。

尝试将AgeBrackets分成两个字段,一个包含下边界,另一个包含上边界,然后使用此SQL:

SELECT TRANSACTIONS.ACCOUNT_NUM,  TRANSACTIONS.Age at List, Age Category.AgeBracketsLower, Age Category.AgeBracketsUpper 
FROM TRANSACTIONS, AgeBrackets
WHERE 
(((TRANSACTIONS.Age at List) Between [AgeBracketsLower] TO [AgeBracketsUpper])); 

使用之间时必须建立明确的下边界和上边界。您不应该为两个边界使用一个字段,因为访问不会区分差异 正确:
1到5之间 2000年至2016年间 在number1和number2之间 你的陈述: 在[AgeBrackets] TO [AgeBrackets]之间粗略地被描述为1到1之间