我在SQL以下SP:SQL查詢條件,其中有過濾器
ALTER PROCEDURE [dbo].[search_employee_special]
(
@employeruid uniqueidentifier,
@groupuid uniqueidentifier,
@includedependants bit = 0
)
AS
DECLARE @emptyuid uniqueidentifier
SET @emptyuid = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
SELECT
emp.id,
emp.name
FROM employee emp
WHERE emp.isactive = 1
AND employeruid = @employeruid
AND (@groupuid = @emptyuid OR emp.gropuid = @groupuid)
這是偉大的工作與過濾器,當@groupuid是空的GUID那麼它不groupuid過濾,否則它過濾通過groupuid ...
現在,我需要的是一個有點複雜,因爲我有其他的參數組合:
ALTER PROCEDURE [dbo].[search_employee_special]
(
@employeruid uniqueidentifier,
@groupuid uniqueidentifier,
@includedependants bit = 0
)
AS
DECLARE @emptyuid uniqueidentifier
SET @emptyuid = CAST(CAST(0 AS BINARY) AS UNIQUEIDENTIFIER)
SELECT
emp.id,
emp.name
FROM employee emp
WHERE emp.isactive = 1
AND employeruid = @employeruid
--AND (@groupuid = @emptyuid OR emp.gropuid = @groupuid)
AND (
(@includedependants = 0 AND
(@groupuid = @emptyuid
OR emp.groupuid = @groupuid))
OR emp.specialgroupuid = @groupuid)
這不起作用 ...我需要的是,如果@includedependants = 1那麼它會過濾emp.specialgroupuid,否則它會過濾emp.groupuid。
任何線索如何解決它?我相信它的東西很簡單:)
提前感謝幫助。
令人驚歎!它效果很好 – VAAA