【问题标题】:Creating joins based on range of number value根据数值范围创建连接
【发布时间】:2017-01-10 08:36:49
【问题描述】:

你们能告诉我下面的情况吗? 我有 2 张桌子。

表 1 如下所示:

同时,这是表 2:

我想将表 2 与表 1 连接起来,以根据上下限列查找每个工作的等级。

通过将这里的一些可爱答案概念化,我设法提出了一个看起来像这样的陈述:

FROM table2 LEFT JOIN table1 ON (table2.[score] >= table1.[lower limit]) AND (table2.[score] <= table1.[upper limit])

上面的语句设法根据范围将它们连接起来,但是,由于某些未知原因,左表中的某些行丢失了,我无法确定它是什么。例如(表 2 中有 2000 行,但查询中只有 1800 行)

我确定连接是原因,好像我将连接更改为相等的左连接,查询中出现了 2000 行。

有人可以给我建议吗?

问候, 光勇

【问题讨论】:

  • 您是否有分数介于年级之间 - 即介于 59 和 60 之间?或空白等级,等级100?我认为您的联接可能会排除这些分数 - 尽管我希望左联接将所有记录强制纳入结果。

标签: ms-access ms-access-2010


【解决方案1】:

也许创建一个具有 1-100 值的表并在您的类别中分配它们,并基本上反映您的表 1 会更简洁。 然后你可以做表2

SELECT Table1.Grade, Table2.Score
FROM Table2 LEFT JOIN Table1 ON Table2.Score = Table1.Score

这肯定会涵盖 0 到 100 之间的所有整数。

如果您手动输入分数,您还可以使用如下简单的数据宏: 转到表格工具>>表格>>更改前

然后使用Set Field Action,并设置

姓名 = Table2.Grade

值 = IIf([Score]&gt;=70,"Good",IIf([Score]&lt;=59,"bad","so so"))

每次输入分数时,它都会自动填充成绩列。

另一种选择是创建如下查询,它将评估每一行并分配适当的等级:

SELECT Table2.Score, 
IIf([Score]>=70,"Good",IIf([Score]<=59,"bad","so so")) AS Grade
FROM Table2;

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多