SQL - 基于参数对不同的表(动态表)运行查询

时间:2016-04-20 16:49:06

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

我基本上有一个@date参数的查询,并且根据@date,我想对正确的表运行查询。如果重要的话,这些表是相同的结构,但在2个不同的服务器上,但它们是链接的,因此从任何一个运行都不是问题。所以我期待:

IF @date = getdate() THEN
SELECT * FROM server1.db1..MyTable
ELSE
SELECT * FROM server2.db2..MyTable_history WHERE date = @date
END

我很确定这可以用动态sql完成,但是查询有点毛茸茸,所以我想尽可能避免这种情况。我希望能够像一个大的IF ELSE语句那样做一些非常干净的事情 - 运行一个查询或另一个查询。

任何帮助将不胜感激。我也在使用SQL Server 2008 R2

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

IF @date = CAST(getdate() as date)
BEGIN 
SELECT * FROM server1.db1..MyTable
ELSE
SELECT * FROM server2.db2..MyTable_history WHERE date = @date
END