2

我使用 SQL Management Studio 创建了一个 SCCM SQL 报告。然后,我为我的 Asset Management Office 创建了以下提示,以在 Web 报告中使用:发布者、显示名称和版本。

显示名称和版本提示都是可选的。

我没有收到任何语法错误或任何东西,但是当我单击“显示”按钮生成 Web 报告时,我绝对没有收到任何结果。

这是我的 SQL 代码:

==================================================== =================================

选择 dbo.v_R_System.Netbios_Name0、dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0、dbo.v_GS_ADD_REMOVE_PROGRAMS.Version0、dbo.v_GS_ADD_REMOVE_PROGRAMS.Publisher0

dbo.v_R_System INNER JOIN dbo.v_GS_ADD_REMOVE_PROGRAMS ON dbo.v_R_System.ResourceID = dbo.v_GS_ADD_REMOVE_PROGRAMS.ResourceID

其中dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 = @DisplayName 和 dbo.v_GS_ADD_REMOVE_PROGRAMS.Version0 = @Version 和 dbo.v_GS_ADD_REMOVE_PROGRAMS.Publisher0 = @Publisher

dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 ASC 排序

==================================================== =================================

我运行我的报告并在 Publisher 提示符中输入类似 %Autodesk% 的内容,然后单击“显示”按钮,但绝对没有显示任何内容。我可以转到另一份报告并查找 Autodesk 产品,但不是这个。我不是一个精通 SQL 的人,所以如果有人能帮助我,那就太好了。

谢谢

4

2 回答 2

0

% 符号通常表示通配符。它们与 like 关键字一起使用。你有等号。换句话说,

where DisplayName like '%fred%'

将返回 fred、freddie、frederick 等。但是,

where DisplayName = '%fred%'

只会返回 %fred%

于 2013-03-13T00:08:40.637 回答
0

啊啊啊我明白你在说丹。

忽略我最后的声明/询问大家,我的代码现在可以工作了。我的 Prompt @variables 的 SQL 代码未正确配置为与“Like”常量一起使用,因此我将主 SQL 代码修改为:

==================================================== ================================ 选择不同的 dbo.v_R_System.Netbios_Name0、dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0、dbo.v_GS_ADD_REMOVE_PROGRAMS。 Version0, dbo.v_GS_ADD_REMOVE_PROGRAMS.Publisher0 FROM dbo.v_R_System Join dbo.v_GS_ADD_REMOVE_PROGRAMS On dbo.v_R_System.ResourceID = dbo.v_GS_ADD_REMOVE_PROGRAMS.ResourceID Where dbo.v_GS_ADD_REMOVE_PROGRAMS.Publisher0 Like @Publisher Or dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 Like @DisplayName Or dbo.v_GS_ADD_REMOVE_PROGRAMS.版本 0 喜欢 @VersionOrder 由 dbo.v_GS_ADD_REMOVE_PROGRAMS.DisplayName0 ASC

==================================================== =================================

然后我不得不修改我的 Prompt SQL 代码以使用 Begin、If、Else 和 End 语句。我将只选择我的@Publisher 变量 Prompt SQL 代码,因为我的所有 Prompt @variables 的 SQL 代码基本相同。

这是我的发布者 (@Publisher) 提示的 SQL 代码:

==================================================== =================================

Begin
If(@__filterwildcard = '')
Select Distinct Publisher0
From v_Add_Remove_Programs Order By Publisher0
Else
Select Distinct Publisher0 From v_Add_Remove_Programs
Where Publisher0 Like @__filterwildcard
Order By Publisher0
End

==================================================== =================================

我之前用于 Prompt @variables 的代码是这样的,它不适用于我的主 SQL 代码中的“Like”常量:

==================================================== =================================

从 v_Add_Remove_Programs 中选择 Distinct Publisher0
按 Publisher0 排序,其中 Publisher0 喜欢 @__filterwildcard
按 Publisher0排序

==================================================== =================================

因此,显然使用 Begin、If、Else 和 End 语句在此查询过程中允许更多逻辑,因此允许我在报告的主要 SQL 代码中使用“Like”常量。

于 2013-03-14T22:49:11.017 回答