我需要使用 Microsoft XRM sdk 查询表达式通过 Windows 服务查询 SQL 数据库,我遇到了一个要求,我必须为每个项目选择最后 n 条历史记录,这些历史记录转换为 SQL,如下所示:
SELECT
RecentPrices.ProductId,
Product.[Description],
RecentPrices.Price,
RecentPrices.DateChanged
FROM
(
SELECT
ProductId,
Price,
DateChanged,
Rank() over
(
Partition BY ProductId
ORDER BY DateChanged DESC
) AS Rank
FROM PricingHistories
) RecentPrices
JOIN ProductMaster Product
ON RecentPrices.ProductId = Product.Id
WHERE Rank <= 10
它应该输出具有最近 10 个价格变化历史的产品列表(价格和日期变化(可以分组为 C# IEnumerable 如下:
产品
- 编号 : 数字
- 描述 : 字符串
- 价格更改最后十预览 [] : 对象数组
中查询表达式是否可以做到这一点,或者我是否必须诉诸按记录进行查询?
请帮忙
如果您检索所有价格变化记录,则可以对它们进行分组,然后从每个分组中Take(10)
。
如果您的截止日期不是前 10 名,您可以查询该日期之后的所有价格变化,然后对它们进行分组。
如果您只想检索每条记录的前 10 名,我认为您必须查询每条记录。您可能需要考虑使用 ExecuteMultiple
对查询进行批处理。