我有一组数据,我希望获取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];
执行此查询时,出现错误:
标准表达式中的数据类型不匹配。
我试过了:
ORDER BY
语句直接添加到查询中(参见上文所述)。这导致“数据类型不匹配”错误。 Status Detail
对报告进行排序。我仍然得到同样的错误。非常感谢任何帮助。谢谢!