如何使用查询表达式 select 每个项目的最后 n 个历史记录
How to select last n historic records per item using Query Expressions
我需要使用 Microsoft XRM sdk 查询表达式通过 windows 服务查询 SQL 数据库,我遇到了一个要求,我必须 select 每个项目的最后 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 个价格变化历史的产品列表(Price 和 DateChange)
可以将其作为 C# IEnumerable 分组为:
产品
- 编号:编号
- 描述:字符串
- PriceChangesLastTenPreview[]:对象数组
这甚至可以在一个查询中使用查询表达式,还是我必须求助于按记录查询?
请帮忙
如果检索到所有的价格变动记录,则可以对它们进行分组,然后每个分组Take(10)
。
如果您有截止日期而不是前 10 名,您可以查询该日期之后的所有价格变化,然后将它们分组。
如果您只想检索每条记录的前 10 条记录,我认为您必须按记录进行查询。您可能想考虑使用 ExecuteMultiple
来批处理查询。
我需要使用 Microsoft XRM sdk 查询表达式通过 windows 服务查询 SQL 数据库,我遇到了一个要求,我必须 select 每个项目的最后 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 个价格变化历史的产品列表(Price 和 DateChange) 可以将其作为 C# IEnumerable 分组为:
产品
- 编号:编号
- 描述:字符串
- PriceChangesLastTenPreview[]:对象数组
这甚至可以在一个查询中使用查询表达式,还是我必须求助于按记录查询?
请帮忙
如果检索到所有的价格变动记录,则可以对它们进行分组,然后每个分组Take(10)
。
如果您有截止日期而不是前 10 名,您可以查询该日期之后的所有价格变化,然后将它们分组。
如果您只想检索每条记录的前 10 条记录,我认为您必须按记录进行查询。您可能想考虑使用 ExecuteMultiple
来批处理查询。