从具有动态名称或多个名称的表中选择

时间:2014-12-22 08:41:41

标签: sql sql-server sql-server-2008

我将在我的选择陈述中构建一种过滤器。所以,我想做的是

如果@Decision中有'ALL',那么我想从多个表中选择数据,如果这个案例表名称来自另一个选择查询

如果@Decision没有'ALL',那么它将具有特定的表名,在这种情况下我想从指定的表名中选择数据

1 个答案:

答案 0 :(得分:1)

正如Dan在评论中提到的,您需要为此

使用动态SQL

因此,创建一个IF语句来询问@Decision的值并相应地构建SELECT语句

IF @Decision = 'ALL'
BEGIN
--build multiple select statement
SET @SQLString = 'SELECT * FROM ' + @TableName1 + ' UNION ALL SELECT * FROM ' + @TableName2
EXECUTE sp_executesql @SQLString
END

IF @Decision <> 'ALL'
BEGIN
--build single select statement
SELECT * FROM YourTable
END