我正在使用存儲過程來獲取某個案例的帳戶。如果@accounts
參數是NULL
,我想獲取該案例的所有帳戶。如果@accounts
是NOT NULL
,那麼它將是以逗號分隔的accountid字符串。我想有一個可以處理這個問題的where子句。某些說如果@accounts
是NULL
然後抓住案件的所有帳戶。否則,請使用@accounts
參數並使用指定的帳戶ID獲取帳戶。我想避免一個大的IF
聲明,這將要求我使用兩個不同的WHERE
子句進行兩次查詢。SQL WHERE子句需要動態化
DECLARE @caseId BIGINT,
DECLARE @accounts VARCHAR(255)
SELECT TOP 1 @userId = userId FROM TblTraceCur t
WHERE caseId = @caseid
ORDER BY processDate DESC
SELECT
.... (select logic) ...
WHERE
t.caseId = @caseID AND
t.userId = @userId AND
t.shortStock = 0 AND
... (where I need the new logic) ...
order by t.tracln ASC
非常感謝!
你會更好的使用臨時表和[Split()函數](http://stackoverflow.com/questions/697519/split-function-equivalent-in-tsql),因爲你將允許查詢優化器使用索引從而提高速度。 – 2012-07-26 07:13:27