2 回答
TA貢獻1853條經驗 獲得超9個贊
我找到了解決此問題的方法,我是這樣做的(我將僅顯示本機查詢,因為它是我唯一更改的內容):
DECLARE @actNum varchar(50),@crdNum varchar(50),@pseId varchar(50),@dateMin varchar(50),@dateMax varchar(50),@amountMin varchar(50),@amountMax varchar(50)
SET @actNum = :actNum
SET @crdNum = :crdNum
SET @pseId = :pseId
SET @dateMin = :dateMin
SET @dateMax = :dateMax
SET @amountMin = :amountMin
SET @amountMax = :amountMax
--Whatever Select with joins statement
WHERE ACT.ACT_AccountNumber = CASE WHEN @actNum = 'N/A'
THEN ACT.ACT_AccountNumber
ELSE @actNum END
AND CRD_CardNumber = CASE WHEN @crdNum = 'N/A'
THEN CRD_CardNumber
ELSE @crdNum END
AND PSE.PSE_Id= CASE WHEN @pseId = 'N/A'
THEN PSE.PSE_Id
ELSE @pseId END
AND PSR.PSR_CreateDate >= CASE WHEN @dateMin = 'N/A'
THEN PSR.PSR_CreateDate
ELSE @dateMin END
AND PSR.PSR_CreateDate <= CASE WHEN @dateMax = 'N/A'
THEN PSR.PSR_CreateDate
ELSE @dateMax END
AND PSR.PSR_Amount BETWEEN CASE WHEN @amountMin = 'N/A'
THEN PSR.PSR_Amount
ELSE @amountMin END
AND CASE WHEN @amountMax = 'N/A'
THEN PSR.PSR_Amount
ELSE @amountMax END
ORDER BY PSR.PSR_CreateDate DESC
后端會將參數作為“N/A”(如果不應該用于過濾數據)或實際值發送,這對我來說很好用!
添加回答
舉報
