2016-03-09 31 views
1

我正在使用SQL Sever 2008.我有幾個存儲在數據庫中的WHERE語句。我正嘗試使用表中的查詢條件構建查詢。將查詢結果用作查詢搜索條件

所以我們可以說我有一個名爲表「類別」

+----------+------------------------+ 
| Seq | SQLWHERE   
+----------+------------------------+ 
|  0 | ([ID] >= 60010 
|  1 | And      
|  2 | [ID] <= 60020) 
|  3 | Or      
|  4 | [ID] = 60025  
|  5 | Or      
|  6 | [ID] = 60035) 
+----------+------------------------+ 

因此,在本質上我需要建立一個使用的SQLWHERE線以上序列0-6的順序查詢。

所以我需要下面的效果,但這不起作用。

SELECT * 
FROM AnotherTable 
WHERE (SELECT SQLWHERE FROM Categories ORDER BY Seq) 

,因爲我想給SQL查詢來呈現

SELECT * 
FROM AnotherTable 
WHERE 
([ID] >= 60010 
And      
[ID] <= 60020) 
Or      
[ID] = 60025  
Or      
[ID] = 60035) 

回答

0

你將不得不創建一個函數或存儲過程來查詢其中的項目並動態構建SQL。然後用附加的where子句執行SQL。這是一個存儲過程示例。將「AnotherTable」更改爲表名並將CategoryX更改爲Category。

CREATE PROCEDURE ExecutDynamicWhere 
AS 
BEGIN 

    DECLARE @Where VARCHAR(8000) 
    DECLARE @sql VARCHAR(8000) 

    SELECT @Where = COALESCE(@Where + ' ', '') + SQLWhere From CategoryX 

    Set @sql = 'SELECT * FROM AnotherTable WHERE ' + @Where 

    EXECUTE sp_executesql @sql 

END 
GO