SQL Query内联IF ELSE语句

时间:2017-07-31 12:03:26

标签: sql sql-server

我有一个参数@year来选择要选择的表,例如:

SELECT * FROM account2014
or
SELECT * FROM account2016

我可以在SQL查询中使用IF吗?像:

SELECT * FROM (IF @year = '2014' THEN account2014 ELSE IF @year = '2016' THEN account2016)

我也测试了

SELECT * FROM account@year

但它不起作用我认为它正在输出帐户'2014',我该如何解决这个问题?我对其他方面的建议持开放态度,请帮助

4 个答案:

答案 0 :(得分:4)

您可以使用union all

SELECT *
FROM account2014
WHERE @year = 2014
UNION ALL
SELECT *
FROM account2016
WHERE @year = 2016;

作为备注:您应该将所有帐户数据存储在一个表格中,其中包含year列。将相同的数据分解为多个表通常是一种反模式。

答案 1 :(得分:1)

USE动态查询

EXEC('SELECT * FROM account'+@Year)

答案 2 :(得分:0)

您可以使用Dynamic SQL

Declare @sql varchar(max), @year int
set @year = 2014 --assign year that you want.
set @sql = 'SELECT * FROM account'+ convert(varchar,@year) 
exec(@sql)

答案 3 :(得分:0)

试试这个..

if @year = '2014'
begin
    SELECT * FROM account2014 where @year = '2014'
end
else if @year = '2016'
begin  
    SELECT * FROM account2016 where @year = '2016'
end