我有一个有条件的表。如何在 t-sql 条件表中连接
SAL
sal >100
sal < 100
sal=500
SELECT SAL into #sal from condtbl
Select Top 1 @sal = event From #sal
`select * from emp where @sal`
我怎样才能完成这样的事情?
我有一个有条件的表。如何在 t-sql 条件表中连接
SAL
sal >100
sal < 100
sal=500
SELECT SAL into #sal from condtbl
Select Top 1 @sal = event From #sal
`select * from emp where @sal`
我怎样才能完成这样的事情?
如果您的条件作为有效 tsql 存储在表中,那么动态 tsql 方法是最好的方法。
不确定它是否适合您,但如果您可以重新评估该方法,可能会有比存储这样的条件更好的方法。例如:
select * from emp where [sal] BETWEEN @minSAL AND @maxSAL
如您所见,这将需要您有 2 个输入变量——但它会覆盖所有 3 个基础(>,<,=)
,具体取决于您传递的值。
我认为这不是一个好主意,除了您需要处理动态 sql之外,还有很多因素会破坏您的查询,在条件表上有正确的列。无论如何,这是您想要的一种方法:
DECLARE @sal NVARCHAR(MAX), @sql NVARCHAR(MAX)
SELECT @sal = SAL
FROM condtbl
WHERE IdCondition = 1 -- an example, don't rely on TOP 1 without ORDER BY
SET @sql = 'SELECT * FROM emp WHERE ' + @sal
EXEC(@sql)