简体   繁体   English

WHERE中的SSRS参数

[英]SSRS parameter in WHERE

I thought this would be really simple but I can't get a way that works. 我认为这很简单,但我无法找到一种有效的方法。

Basically I would like to make the report search by the entered parameters, IE in the WHERE clause. 基本上我想通过输入的参数,WHERE子句中的IE来进行报告搜索。

For example, parameters in the below would be @ColumnName and @SearchTerm 例如,下面的参数是@ColumnName和@SearchTerm

SELECT
OITM.[ItemCode] AS [Item Code],
OITM.[ItemName] AS [Item Name],
OITM.[FrgnName] AS [Merchandise Type],
OITM.[OnHand] AS [In Stock],
OITM.[IsCommited] AS [Customer Reserved], 
OITM.[Onorder] AS [On Order],
OITW.[AvgPrice] AS [Cost]

FROM OITW
 INNER JOIN OITM ON OITM.[ItemCode] = OITW.[ItemCode]

WHERE
OITM.(@ColumnName) LIKE '%(@SearchTerm)%'

This must be possible? 这一定是可能的吗? Many thanks. 非常感谢。

I don't always like to encourage the use of dynamic SQL, but the following will do what you are trying to accomplish. 我并不总是喜欢鼓励使用动态SQL,但以下内容将完成您要完成的任务。

DECLARE @ColumnName varchar(10) = 'ItemName', @SearchTerm varchar(5) = 'pat', @sql varchar(1000) = ''

SELECT @sql = 'SELECT
OITM.[ItemCode] AS [Item Code],
OITM.[ItemName] AS [Item Name],
OITM.[FrgnName] AS [Merchandise Type],
OITM.[OnHand] AS [In Stock],
OITM.[IsCommited] AS [Customer Reserved], 
OITM.[Onorder] AS [On Order],
OITW.[AvgPrice] AS [Cost]

FROM OITW
 INNER JOIN OITM ON OITM.[ItemCode] = OITW.[ItemCode]

WHERE OITM.' + @ColumnName + ' LIKE ''%' + @SearchTerm + '%'''

EXEC (@sql)

The following is how I would really do this, but you may have reasons for not wanting to do this. 以下是我如何真正做到这一点,但你可能有理由不想这样做。 Up to you. 由你决定。

SELECT
OITM.[ItemCode] AS [Item Code],
OITM.[ItemName] AS [Item Name],
OITM.[FrgnName] AS [Merchandise Type],
OITM.[OnHand] AS [In Stock],
OITM.[IsCommited] AS [Customer Reserved], 
OITM.[Onorder] AS [On Order],
OITW.[AvgPrice] AS [Cost]

FROM OITW
 INNER JOIN OITM ON OITM.[ItemCode] = OITW.[ItemCode]

WHERE (OITM.ItemName LIKE '%' + @SearchTerm + '%'
    OR OITM.FrgnName LIKE '%' + @SearchTerm + '%')...

Good luck! 祝好运!

Try this: 尝试这个:

SELECT
OITM.[ItemCode] AS [Item Code],
OITM.[ItemName] AS [Item Name],
OITM.[FrgnName] AS [Merchandise Type],
OITM.[OnHand] AS [In Stock],
OITM.[IsCommited] AS [Customer Reserved], 
OITM.[Onorder] AS [On Order],
OITW.[AvgPrice] AS [Cost]

FROM OITW
 INNER JOIN OITM ON OITM.[ItemCode] = OITW.[ItemCode]

WHERE
OITM.(@ColumnName) LIKE '%' + @SearchTerm + '%'

Note your parameter must be text type. 请注意,您的参数必须是文本类型。

Let me know if this helps. 如果这有帮助,请告诉我。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM