我正在使用存储过程来获取某个案例的帐户。如果@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