从列表返回错误的最小值 - MS Access Query

时间:2016-05-24 13:20:37

标签: sql ms-access

我正在使用MS Access存储如下所示的数据:

| EmpID |第1天|第2天|第3天|第4天|第5天
| aa | 23 | 23 | 24 | 25 |
| bbb | 23 | 1440 | | |
| ccc | | 240 | 240 | 300 | 360
| ddd | | 20 | 20 | 20 | 20

我找到了一种方法来找到记录中的最小值ACROSS(单个ROW中第1,2,3,4,5列中的最小数字)并写下以下查询:

SELECT最小值([Day1],[Day2],[Day3],[Day4],[Day5],[Day6],[Day7],[Day8],[Day9],[Day10] ],[附加])作为[MinVal],Day1,Day2,Day3,Day4,Day5 from Tasks;

得到这个结果:

MinVal | Day1 | Day2 | Day3 | Day4 | Day5
23 | 23 | 23 | 24 | 25 |
5 | 23 | 1440 | 5 | |
80 | | 240 | 80 | 300 | 360
10 | | 20 | 10 | 20 | 20

现在我正试图从MinVal列中获取最小值。
预期: 5
实际: 10

我使用的查询是: 从( SELECT最小值([第1天],[第2天],[第3天],[第4天],[第5天],[第6天],[第7天],[第8天]选择最小值([MinVal])作为MinimumVal ],[Day9],[Day10],[Additional])作为[MinVal]来自任务)t;

所有字段的数据类型都是数字。 我无法弄清楚为什么Min函数从列表中返回错误的值。请帮我解决这个问题!

修改:我从here获得了最小功能。我不得不对页面中给出的函数进行更改,因为如果您的记录具有空值并且只有一个数字,则它将输出null作为输出(不能正确地将NULL与数字进行比较)。 所以,而不是:
 如果FieldArray(I)< currentVal然后
 currentVal = FieldArray(I)
 结束如果

使用:

If(FieldArray(I)< currentVal)和(IsNull(currentVal)= False)然后
 currentVal = FieldArray(I)
 ElseIf(IsNull(currentVal)= True)和(IsNull(FieldArray(I))= False)然后
 currentVal = FieldArray(I)
 结束如果

1 个答案:

答案 0 :(得分:1)

看来,用于计算字段中最小值的最小函数(找到here)可能不会返回number / int数据类型。因此,将您的minval列转换为数字,然后执行min ..

blpapi