Reputation: 1189
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.
For example, parameters in the below would be @ColumnName and @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.
Upvotes: 1
Views: 94
Reputation: 25161
I don't always like to encourage the use of dynamic SQL, but the following will do what you are trying to accomplish.
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!
Upvotes: 2
Reputation: 14108
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.
Upvotes: 1