数据类型不匹配 - 排序访问SQL“前N个”查询时

时间:2017-01-09 14:02:49

标签: sql ms-access top-n

我的基本代码

我有一组数据,我希望获取Top N最高SumOfAmount值的FOR Status Detail值。为此,我使用了:

SELECT 
  [Report_SubstatusVsInsurance_Top3_Q, Part 1].[Status Detail], 
  [Report_SubstatusVsInsurance_Top3_Q, Part 1].Insurance, 
  [Report_SubstatusVsInsurance_Top3_Q, Part 1].[CountOfInvoice No], 
  [Report_SubstatusVsInsurance_Top3_Q, Part 1].SumOfAmount
FROM [Report_SubstatusVsInsurance_Top3_Q, Part 1]
WHERE (([Report_SubstatusVsInsurance_Top3_Q, Part 1].SumOfAmount In 
  (
   SELECT TOP 3 SumOfAmount 
   FROM [Report_SubstatusVsInsurance_Top3_Q, Part 1] as t 
   WHERE t.[Status Detail] = [Report_SubstatusVsInsurance_Top3_Q, Part 1].[Status Detail] 
   ORDER By SumOfAmount DESC))
  );

注意:使用WHERE子选择允许我获取查询的FOR EACH Status Detail元素。简单地使用SELECT TOP 3只能为我提供前3项收费。

我的问题

长话短说 - 看起来WHERE子选择标准所要求的顺序阻止了主查询中的进一步排序。

现在我有了我想要的结果,我正在尝试正确显示它们。我正试图按Status Detail排序。我尝试在这里发布我的代码,但它不能正确格式化 - 代码只是上面的“我的基础代码”,而且,在最终的);之间是:

ORDER BY [Status Detail];

执行此查询时,出现错误:

  

标准表达式中的数据类型不匹配。

故障排除

我试过了:

  1. ORDER BY语句直接添加到查询中(参见上文所述)。这导致“数据类型不匹配”错误。
  2. 使用报告,按Status Detail对报告进行排序。我仍然得到同样的错误。
  3. 使用从此查询的结果构建的第二个查询,并对其进行排序。我仍然得到同样的错误。
  4. 非常感谢任何帮助。谢谢!

0 个答案:

没有答案