2015-10-16 65 views
1

我嘗試執行以下operation.But它給誤差存儲在臨時表中的數據返回多個值錯誤「子查詢返回大於1倍的值。」子查詢而使用分割功能

declare @filter varchar(100)='Moving,Idle,Stopped,Working' 
declare @filter2 varchar(100)='Init,suspend,Complete'  

create table #SPLITITEMS(value varchar(100),value1 varchar(100)) 
insert into #SPLITITEMS (value,value1)values((select val from dbo.split(@filter,',')),(select val from dbo.split(@filter2,','))) 

,這樣我可以有更好的表現進行

select * from table1 where column1 in (select value from #SPLITITEMS) 
select * from table2 where column1 in (select value1 from #SPLITITEMS) 

我該如何實現這個任務?他們可以嘗試的其他選擇嗎?有任何想法嗎?有什麼建議麼?

請幫忙。 在此先感謝。

回答

0

這可能幫助:

declare @Q1 nvarchar(max) 
declare @filter varchar(100)='Moving,Idle,Stopped,Working' 
declare @filter2 varchar(100)='Init,suspend,Complete'  

Set @filter = '''' + replace(@filter, ',', ''',''') + '''' 
Set @filter2 = '''' + replace(@filter2, ',', ''',''') + '''' 

Set @Q1 = 'select * from table1 where column1 in (' + @filter + ')' 

Exec (@Q1) 
+0

感謝的建議,但因爲上面給出的查詢是一個大的存儲過程的一小部分,我不能使用它。 – Pwavel002

+0

我們給你小解決方案,因爲你給小部分....以及'大'是你的商店過程? – Viandry

+0

要求是插入列值在臨時表中的形式的過濾器值,這樣我可以在像子句中使用它SELECT * FROM表1其中(從#SPLITITEMS選擇值).Insert查詢列工作,如果臨時表只有一列。但對於多列它給出了錯誤。我不能在這裏使用動態查詢。 – Pwavel002