【问题标题】:List ALL or specified value - SSRS Parameter列出所有或指定的值 - SSRS 参数
【发布时间】:2014-05-20 13:34:56
【问题描述】:

我正在SSRS中做一个报告,我可以输入参数值并获得结果。但是,我想要的是,例如,如果我输入“全部”,则列出所有服务器,或者列出我输入的特定服务器。

这是 TSQL 更改吗?还是更改 SSRS 参数设置?有人对如何完成此任务有建议吗?

这是我尝试过的:

DECLARE @p_ServerName varchar(10) = 'all'
DECLARE @p_Env nvarchar(10)
DECLARE @p_EnvCat nvarchar(10)

SELECT     BlockSize, BootVolume, Compressed, SystemName = @p_ServerName, Label, Caption, PageFilePresent,
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', Capacity) AS Capacity,
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', FreeSpace) AS [Free Space], 
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', Capacity - FreeSpace) AS [Used Space],
           100 * FreeSpace / Capacity AS [Free Space %],

           [CLE_ENV_SHORT], [CLE_ENV_CAT_SHORT]



FROM       CCS_Win32_Volume, [dbo].[CCS_V_SERVER_INSTANCE_DETAILS]


WHERE      (@p_ServerName = SystemName) OR (@p_ServerName = 'all')
AND        [CLE_ENV_SHORT] = @p_Env 
AND        [CLE_ENV_CAT_SHORT] = @p_EnvCat

使用 all 硬编码的参数,我应该看到所有结果,对吗?但是我没有返回任何结果。

【问题讨论】:

  • 你的括号放错了。 (a) or (b) and c and d 等于 a or (b and c and d),因为 andor 之前。您需要(a 或 b)以及 c 和 d。
  • 顺便说一句:您正在交叉连接两个表。这是故意的吗?您应该使用最新的语法,即显式连接,例如 INNER JOIN、CROSS JOIN 或其他。
  • 您的示例中的其他两个参数是空的,所以它们不会匹配任何列,对吧?这就解释了为什么使用有效的服务器名称可以获得记录,而使用“all”则不会,因为永远不会满足“all”加上其他两个条件。

标签: sql sql-server tsql reporting-services


【解决方案1】:

您可以相应地编写 WHERE 子句:

select ...
from mytable
where @param = col or @param = 'all';

【讨论】:

  • @choloboy:好吧,也许我理解错了。我虽然当 param = 'xxx' 你得到 col = 'xxx' 的记录,而当 param = 'all' 然后你得到所有记录。这不是你想要的吗?
  • @Matt:啊,您认为问题是关于如何获取所有服务器名称加上“全部”以获取有效输入列表。我认为输入了“全部”或服务器名称,任务是编写查询以使用该参数在表中查找全部或一个匹配记录。
  • 感谢您的 cmets,我正在尝试获取所有名称 (x,y,z) 或仅获取 x 或仅获取 y 或仅获取 z,具体取决于我输入的内容。 z,y,z 不是实际名称,在我的情况下有超过 100 个可能的服务器名称@Matt
  • @choloboy:所以我的查询应该适合你。当 param 为“all”时,无论 col 包含什么,每条记录都满足条件,因此您可以取回所有记录。也许您的查询中有更多条件而忘记使用括号?
  • @ThorstenKettner 我在编辑中添加了我的查询,我不明白为什么当参数被硬编码为所有人时我最终没有结果。但是当我将它硬编码为 ServerName 时,它​​就可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-29
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
相关资源
最近更新 更多