【问题标题】:Error Using the iif statement in MS access在 MS 访问中使用 iif 语句时出错
【发布时间】:2021-07-04 21:28:53
【问题描述】:

我在 MS ACCESS 中进行的此查询中的 completion_metric 字段一直给我所有记录的 0%。我认为我的 IIF 声明有问题。此外,如何使用此查询在 ms 访问表单上填充文本框。对于文本框,似乎没有让我的记录源成为查询的选项。

SELECT 
FORMAT(SUM(IIF (status='Completed',1,0)) / COUNT(Status),"percent") AS completion_metric
FROM   promis_lt 
GROUP BY Short_ID;

【问题讨论】:

  • 您需要将分子乘以十进制常量1.0 或使用显式类型转换为十进制。当前代码使用整数除法,它将始终显示为零(如果这是总数的百分比)。文本框呢:您需要提出单独的问题
  • @astentx 不,它是 Access 所以 / 是浮点除法,\ 是整数除法,无论输入的数据类型如何。 @OP 请提供样本数据。您是否 100% 确定状态字段包含完全完成且没有隐藏字符?运行SELECT status, len(status) FROM promis_lt 并检查长度是否符合预期。
  • 另外,永远不要使用SUM(x)/COUNT(x),而是始终使用AVG。求和然后除会导致AVG 没有的溢出和准确性问题
  • 一些样本数据会很好。

标签: sql ms-access


【解决方案1】:

我怀疑问题出在整数除法上。而是:

SELECT FORMAT(AVG(IIF(status = 'Completed', 1.0 , 0)), "percent") AS completion_metric
FROM promis_lt
GROUP BY Short_ID

【讨论】:

  • 在 cmets 中已建议使用此解决方案,我已经指出并非如此,在 Access 中 / 始终是浮点数,而 \ 是整数除法。重复有争议的评论不是有用的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多