我有一些数据库,名为db2012、db2013、db2014、db2015、db2016
我在函数中有一个select语句,如下所示

SELECT columnName1,columnName2, ... FROM [DB2015].[dbo].tableName

我每年都要把这个代码改成前一年的代码,但我想让它通用化,并自动取上一年的数据库名。我找不到解决那个问题的办法。任何帮助都将不胜感激。

最佳答案

获取当前年份和上一年,并使用动态sql更改查询。

DECLARE @CURRENTYEAR  AS INT = year(getdate())
DECLARE @PREVIOUSYEAR AS INT = @CURRENTYEAR - 1

DECLARE @QUERY_ VARCHAR(2000)
SET @QUERY_ =
'SELECT
     COL_1
    ,COL_2
    ...
FROM DB' + @CURRENTYEAR + '.DBO.TABLENAME

UNION ALL

SELECT
     COL_1
    ,COL_2
    ...
FROM DB' + @PREVIOUSYEAR + '2015.DBO.TABLENAME'

EXEC(@QUERY_)

关于sql-server - 指定数据库名称和上一年,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36625575/

10-10 03:32