我有一个参数@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',我该如何解决这个问题?我对其他方面的建议持开放态度,请帮助
答案 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