我需要使用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,例如:
产品
在一个查询中使用查询表达式是否有可能做到这一点?还是我不得不诉诸于每条记录进行查询?
请帮助
答案 0 :(得分:0)
如果您检索了所有价格变化记录,则可以将它们分组,然后从每个分组中Take(10)
进行分组。
如果您有日期截止日期而不是前10天,则可以查询该日期之后的所有价格变化,然后将其分组。
如果您只想检索每条记录的前10名,我认为您必须查询每条记录。您可能需要考虑使用ExecuteMultiple
来批量查询。