我如何获取' distinct'数据在查找视图中保留行ID?

时间:2016-05-20 12:28:55

标签: dynamics-crm-2011 dynamics-crm fetchxml

假设我有一个具有以下结构的实体:

ID (it would be the GUID of the record, I'll use number in this example for easier read)
Name
Product (lookup to product)
Price List (custom lookup to standard price list) 

我现在需要以这种方式构建查找视图:


(Sample data) 
ID    Name    Product    PriceList
-----------------------------------
1      Rec1    P1         PL1
2      Rec1    P1         PL2 
3      Rec1    P1         PL3
4      Rec2    P2         PL1
5      Rec2    P2         PL2

(Desired result in lookup view)
ID    Name
-----------------------------------
1     Rec1              
4     Rec2              

用简单的英语解释这个要求,是:

在查找视图中,我只希望每个名称有一行:产品和价格表并不重要。

如果我可以直接使用T-SQL,我会做什么:

;WITH cte AS
(
    SELECT ROW_NUMBER() 
    OVER (PARTITION BY Name ORDER BY Name ASC) AS RowNo, ID, Name
    FROM FilteredEntity
)
SELECT ID, Name FROM cte WHERE RowNo = 1

但我无法弄清楚如何在FetchXML查询中实现相同的结果集。

2 个答案:

答案 0 :(得分:1)

我能想到的唯一方法就是这样:

  1. 在表单上的JS中,确定唯一名称(示例中的Rec1和Rec2),并存储引用Rec1和Rec2的两个记录的ID(让我们称这些ID为Id1和Id2)
  2. 生成一个仅返回这两个记录的提取查询。您的获取查询将特别说明显示id为Id1或Id2的记录。
  3. 使用addCustomFilter和addPreSearch(link)过滤查找。

答案 1 :(得分:0)

我可以在这里看到两种方法,这两种方法都不是纯粹的FetchXML查询。

  1. 使用distinct,(我不是百分之百,但值得一试)。这将有希望为您提供每个名称的记录,您只需获取每个代码的第一条记录。
  2. <attribute name='name' distinct='true'/>

    1. 使用Linq执行过滤客户端。