我在 MS Access。
中有下表
Day ABC
365 25
548 35
730 37
913 58
1095 146

我想查询它,以便在Day列的给定值之前和之后得到行。该值是可变的,例如可以是 value = 432 对于此示例,查询将生成下表。
Day ABC
365 25
548 35

因为给定值= 432大于Day值365且小于Day值548.
我设法做的是获得一个领域,但不是两个领域。以下查询为我提供了Day字段的正确行。
Select Max(Day) As Day From Table Where Day < 432
UNION
Select Min(Day) As Day From Table Where Day > 432
当我使用此代码并添加另一个字段(如ABC)时,我收到错误。
你可以帮帮我吗?我认为这应该是一项非常容易的任务。谢谢!您尝试执行不包含指定的查询 表达&#39; ABC&#39;作为集合函数的一部分。
答案 0 :(得分:1)
您的SQL存在一些问题。出现错误消息是因为您没有向GROUP BY ABC
语句添加SELECT
子句
您还会获得MAX(DAY) as DAY
的循环引用 - 您需要将as Day
更改为其他内容as lDay
。
你可能(我做的)得到一个错误语法错误调用它Table
- 非常确定这是一个保留字。
也许这个查询会更好用:
Select Top 1 Day, ABC From Table3 Where Day <= 913 ORDER BY Day Desc
UNION ALL
Select Top 1 Day, ABC From Table3 Where Day >= 913 ORDER BY Day Asc
答案 1 :(得分:0)
你也可能是一个小小的爱好者:
Select Top 2 Day, ABC From Table3 Order By Abs(Day - 432) Desc
请注意,结果将与问题的标题相符,不一定是您的详细说明......