也許我誤解你的問題......
你想在表ValueTable2的值上應用FilterTable1上的那些過濾器,對嗎?
做的和條件......與過濾器..
確定哪些引用號填寫的所有條件。我是對的?還是在這一點上誤解了?
和這個RefNo引用表ValueTable1,對吧?或者我誤解了?
如果我undestood權
可以嘗試這樣的事情......
create table ##ValueTable1 (id int , name varchar)
insert into ##ValueTable1
values (1,'X'),(2,'Y')
create table ##ValueTable2 (id int , RefNo int, Property nvarchar(max),value int)
insert into ##ValueTable2
values
(1 , 1 ,'P1', 500),
(2 , 1 ,'P2', 300),
(3 , 1 ,'P3', 200),
(4 , 2 ,'P1', 250),
(5 , 2 ,'P2', 100),
(6 , 2 ,'P3', 200)
create table ##FilterTable1 (id int, Property nvarchar(max),Operator nvarchar(max) , value int)
insert into ##FilterTable1
values
(1,'P1','>', 100),
(1,'P2','=', 300),
(1,'P3','<>',100)
declare @sql nvarchar(max)
set @sql = ''
select @sql = @sql + ' intersect select RefNo from ##ValueTable2 where Property = ''' +Property+''' and value '+Operator+CAST(value as varchar(max))
from ##FilterTable1
where id = 1
set @sql = 'select * from ##ValueTable1 T inner join ('+STUFF(@sql,1,10,'') +')V on V.RefNo = T.id'
--just stuff @sql if ##ValueTable1 doesnt matter
--set @sql = STUFF(@sql,1,10,'')
exec(@sql)
drop table ##ValueTable2
drop table ##FilterTable1
drop table ##ValueTable1
我的ResultSet實現的是...
id name RefNo
1 X 1
謝謝您的回答。我知道如何執行它,但我無法創建query.Filter錶行必須是AND子句 – user1624185 2013-02-18 19:31:59
我編輯我的答案,希望這有助於。 – YvesR 2013-02-18 19:43:46
2nd編輯:@value需要是varchar,所以我CAST()值 – YvesR 2013-02-18 19:47:56