【问题标题】:How to select last n historic records per item using Query Expressions如何使用查询表达式选择每个项目的最后 n 条历史记录
【发布时间】:2019-06-13 09:29:45
【问题描述】:

我需要使用 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,例如:

产品

  • ID:号码
  • 描述:字符串
  • PriceChangesLastTenPreview []:对象数组

这甚至可以在一个查询中使用查询表达式,还是我必须求助于每条记录的查询?

请帮忙

【问题讨论】:

    标签: c# dynamics-crm dynamics-crm-2011 query-expressions


    【解决方案1】:

    如果您检索所有价格变化记录,您可以将它们分组,然后从每个分组中Take(10)

    如果您有截止日期而不是前 10 名,您可以查询该日期之后的所有价格变化,然后将它们分组。

    如果您只想检索每条记录的前 10 条,我认为您必须查询每条记录。您可能需要考虑使用ExecuteMultiple 来批处理查询。

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2012-02-07
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多