gpt4 book ai didi

reporting-services - 如何在 FetchXML 中使条件可选

转载 作者:行者123 更新时间:2023-12-04 07:57:04 25 4
gpt4 key购买 nike

我有一些性能很慢的 SQL 报告,所以我们将它们全部转换为 FetchXML,但所有 SQL 报告都有可选的所有条件,如下所示:

SELECT 
...
FROM ...
WHERE (@operator = 'All' OR Operator = @operator)
AND (@new_gen_comp_name = 'All' OR new_gen_comp_name = @new_gen_comp_name)
...

在参数值中,有一个值 All如果用户选择此值,则条件将被忽略,因此它将从该字段中获取所有值。

现在我想在 FetchXML 中做到这一点,我尝试在过滤器 or 中加入两个条件在它们之间,一个用于值,另一个用于包含这样的空值:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
<entity name="incident">
...
...
<filter type="and">
<filter type="and">
<condition attribute="createdon" operator="on-or-after" value="@StartDate" />
<condition attribute="createdon" operator="on-or-before" value="@EndDate" />
</filter>
<filter type="or">
<condition attribute="new_gen_comp_type" operator="in" value="@new_gen_comp_type" />
<condition attribute="new_gen_comp_type" operator="null" />
</filter>
</filter>

...
...
</entity>
</fetch>

仅当用户选择参数 @new_gen_comp_type 的所有值时,这才能正常工作。 ,但问题是如果用户只选择特定值,它也会包含空值,这是错误的。

那么,如果用户选择 select all,有没有办法让这些条件成为可选的?对于 SQL 中的参数值?

最佳答案

由于您在 SSRS 中执行此操作,因此您无法选择更改 Fetch XML,而这正是您真正需要做的。 (如果用户选择“ALL”,则不要在 new_gen_comp_type 上包含约束)

我能想到的唯一选择有点愚蠢,但它应该有效。在事件 new_all 上创建新属性默认为“ALL”,并运行更新语句以将所有现有事件填充为“ALL”。然后将您的 FetchXml 过滤器更改为:

<filter type="or">
<condition attribute="new_gen_comp_type" operator="eq" value="@new_gen_comp_type" />
<condition attribute="new_all" operator="eq" value="@new_gen_comp_type" />
</filter>

如果用户选择“ALL”,则第二个语句将为真,并且将返回所有内容。如果用户选择 ALL 之外的其他内容,则第二个语句将始终为 false,第一个语句将仅返回匹配的内容。

请注意属性 operator="in"不适用于多个值。您需要为每个值制作一个值子标签...

来自 XSD:

The attribute "value" is used for all operators that compare to a single value (for example, eq). The element "value" is used for operators that compare to multiple values (for example, in). Some operators require neither the attribute "value" or the element "value" (for example, null).

关于reporting-services - 如何在 FetchXML 中使条件可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24300831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com