다음 SQL Server 2008 쿼리가 있습니다. @Filter 매개 변수가 채워지면 해당 값을 각 필드 (열을 가로 질러)로 전달하도록이를 보강하고 싶습니다. 필터가 없으면 쿼리가 완벽하게 작동합니다. 필자는 필자가 필터를 가져야하는지 잘 모르겠습니다. 어떤 도움이 많이 주시면 감사하겠습니다 :매개 변수가 채워진 경우 필터가있는 SELECT ROW_NUMBER()?
ALTER PROCEDURE [dbo].[pd_Get_Team2]
@OutTotalRecCount INT OUTPUT,
@CurrentPage INT,
@PageSize INT,
@Token as nvarchar(50),
@UserID as nvarchar(50),
@SortDirection INT,
@SortField nvarchar(50),
@Filter nvarchar(50)
AS
SELECT * FROM
(SELECT ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @SortDirection = 1 AND @SortField = 1 THEN pd_Role.UserID END ASC,
CASE WHEN @SortDirection = 2 AND @SortField = 1 THEN pd_Role.UserID END DESC
) AS Row,
pd_Role.id,
pd_Role.Edit_Rights,
pd_Role.UserID,
pd_Role.Is_Approved,
pd_Role.Login_Date,
pd_Role.Team
FROM pd_Role INNER JOIN
pd_Token ON pd_Role.Token = pd_Token.Token
WHERE
(pd_Token.Token = @Token) AND (pd_Token.UserID = @UserID)
--how do I structure a filter on these fields if the filter is populated?
--CASE WHEN LEN(@Filter)> 1
--AND pd_Role.Edit_Rights LIKE '%' + @Filter + '%' OR
--AND pd_Role.UserID LIKE '%' + @Filter + '%' OR
--AND pd_Role.Team LIKE '%' + @Filter + '%'
--
)
AS TeamWithRowNumbers
WHERE Row >= (@CurrentPage - 1) * @PageSize + 1 AND Row <= @CurrentPage*@PageSize
SELECT @OutTotalRecCount = COUNT(*) FROM pd_Role
WHERE (pd_Role.Token = @Token)
감사합니다. Serge! 대단합니다! – Rob
다음과 같은 경우 작동하지 않습니다. pd_Role.Edit_Rights, pd_Role.UserID, pd_Role.Team은 NULL 일 수 있습니다. – Serge
null이 아닙니다. 다시 한번 감사드립니다! – Rob