遇到一个情况,一个查询语句,查询条件之一是其中一个字段的内容:
SELECT Fcode,Fnumber,FitemRangeSQL FROM A where Fcode='A001'
结果为:
A001,2, ( Fcode in ('A001','A002','A003') ) ,
但还需要把 FitemRangeSQL 的内容作为查询条件之一。
如果 where 条件为 Fcode in ('A001','B001') 查询
select Fcode,Fnumber,FitemRangeSQL FROM A where Fcode in ('A001','B001') and Fcode in ('A001','A002','A003')
怎么把FitemRangeSQL 字段内容作为查询条件放进去啊。
------解决方案--------------------
declare @sql varchar(200)
declare @re varchar(50)
set @re=(SELECT top 1 FitemRangeSQL FROM A where Fcode='A001')
set @sql='select Fcode,Fnumber,FitemRangeSQL FROM A where
Fcode in (''''A001'''',''''B001'''') and Fcode in (''''A001'''',''''A002'''',''''A003'''')
and '+@re
exec (@sql)
------解决方案--------------------
DECLARE @Sql VARCHAR(MAX)
SELECT @Sql=ISNULL(@Sql,'')+' OR '+FitemRangeSQL FROM A WHERE Fcode IN('A001','B001') GROUP BY FitemRangeSQL
DECLARE @sql1 VARCHAR(MAX)
SET @sql='SELECT Fcode,Fnumber,FitemRangeSQL FROM A WHERE 1=0 '+@Sql
EXEC (@sql1)