2015-06-04 38 views
0

我有一個包含2列的臨時表,每列都是我聲明的參數。我已經這樣使用這個SQL。
SSMS溫度表/參數問題

Declare 
@SourceKey varchar(40) = '1109' 
,@Department Key varchar(1500) = '14,55 

表,然後使用下面的SQL填充:

if OBJECT_ID('Tempdb..#Department','U') is not null 
    drop table #Department 
CREATE TABLE #Department 
    (DepartmentKey int 
    ,BaseTerm varchar(5)) 
INSERT INTO #Department 
SELECT value 
,skt.Key from YYY.ParseList(@Department,',') 
join #SourceKeyTable skt 
    on skt.Key = skt.key 

如果我select * From #Department我得到這些結果:

Department Key | SourceKey 
14    | 1109 
55    | 1109 

那是我所期望的。然後我加入臨時表到我的主查詢,像這樣

JOIN #Department d 
     on Table.rKey = d.DepartmentKey  

我需要有一個臨時表中,以便在Visual Studio報表多選。但是,使用部門密鑰等於14 AND 55其偏差我的結果。我需要通過一個值14 55不是兩個。但臨時表是多選的必要條件。

有關如何在通過前面提到的設置時只傳遞1個值的任何建議?
我會盡我所能來回答問題,因爲我可能沒有足夠好地解釋這個問題。

+0

您需要相同的查詢來執行兩個單獨的執行嗎?一個14和一個55? – sbiz

+0

是的,我相信。我計劃執行一次查詢,但單獨傳遞14,然後傳遞55,因爲它通過臨時表循環。 – user4966755

回答

0

我認爲你需要將你的列表解析到臨時表或表變量中,然後做任何需要完成的事情。

從代碼中很難看出究竟會涉及哪些內容,但下面的代碼應該充分說明這個想法。

我創建了一個表變量。插入解析的列表值,然後遍歷它們將值打印輸出

--Create a table variable 
DECLARE @Departments TABLE(DepartmentOrder int identity, RKey nvarchar(40) NOT NULL) 

--Create variables to loop through table variable 
DECLARE @DepartmentOrder int 
DECLARE @RKey nvarchar(40) 

--Populate table variable with the parsed list values 
INSERT @Departments (RKey) SELECT RKey from YYY.ParseList(@Department,',') 

--Get the first list entry 
SELECT @DepartmentOrder = min(DepartmentOrder) FROM @Departments 

--While we've not reached the end 
WHILE @DepartmentOrder IS NOT NULL 
BEGIN 
    --Get the Department key for this entry 
    SET @RKey = (SELECT RKey FROM @Departments WHERE DepartmentOrder = @DepartmentOrder ) 

    --Use the values 
    PRINT '@DepartmentOrder = '+CONVERT(nvarchar(9),@DepartmentOrder) 
    PRINT '@RKey = '''[email protected] +'''' 

    --Get the next list entry 
    SET @DepartmentOrder = (SELECT MIN(DepartmentOrder) FROM @Departments WHERE DepartmentOrder > @DepartmentOrder) 
END 
+0

我試圖重新創建您發佈的內容。儘管我能夠獲得大部分內容並能夠工作,但是您是否想添加一個從運行中接收到的輸出的小例子:SELECT @DepartmentOrder = MIN(DepartmentOrder)FROM @Departments WHERE DepartmentOrder> @ DepartmentOrder''' – user4966755

+0

SELECT @ DepartmentOrder = MIN(DepartmentOrder) FROM @Departments WHERE DepartmentOrder> @ DepartmentOrder 不產生輸出。 它分配一個新值xDepartmentOrder變量 請注意,我已經把空間@符號後發佈此 –

+0

SET @ DepartmentOrder =(SELECT MIN(DepartmentOrder)FROM @部門WHERE DepartmentOrder> @ DepartmentOrder) 將工作一樣好,可能不太令人困惑 我已經改變了上面的代碼來使用它 –