【问题标题】:How can I fetch 'distinct' data keeping row ID in the lookup view?如何在查找视图中获取保持行 ID 的“不同”数据?
【发布时间】:2016-05-20 12:28:54
【问题描述】:

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

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) 

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

(样本数据) ID 名称 产品价格表 ---------------------------------- 1 建议 1 P1 PL1 2 推荐 1 P1 PL2 3 推荐 1 P1 PL3 4 Rec2 P2 PL1 5 Rec2 P2 PL2 (查找视图中的所需结果) 身份证名称 ---------------------------------- 1个推荐1 4 推荐 2

用通俗易懂的英文解释需求,就是:

在查找视图中,每个名称只需要一行:产品和价目表无关紧要。

如果我可以直接使用 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 查询中获得相同的结果集。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我在另一个项目上使用了它,所以很荣幸,不幸的是,在这种特殊情况下,我需要构建一个保存的查询,所以 如果可以完成它必须是一个单独的 fetchxml没有脚本的查询...
    【解决方案2】:

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

    1. 使用distinct,(我不是100%,但值得一试)。然后,这有望为您提供每个名称的记录,并且您只需在代码中获取每个名称的第一条记录。

    <attribute name='name' distinct='true'/>

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

    【讨论】:

    • distinct 不幸的是没有效果,因为查询必须包含实体 ID(否则查找将无法正常工作)。关于 LINQ 部分,我将研究某种检索插件...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多