0

我有一个有条件的表。如何在 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`

我怎样才能完成这样的事情?

4

2 回答 2

0

如果您的条件作为有效 tsql 存储在表中,那么动态 tsql 方法是最好的方法。

不确定它是否适合您,但如果您可以重新评估该方法,可能会有比存储这样的条件更好的方法。例如:

select * from emp where [sal] BETWEEN @minSAL AND @maxSAL

如您所见,这将需要您有 2 个输入变量——但它会覆盖所有 3 个基础(>,<,=),具体取决于您传递的值。

于 2013-03-21T20:52:12.480 回答
0

我认为这不是一个好主意,除了您需要处理动态 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)
于 2013-03-21T20:43:28.237 回答