gpt4 book ai didi

sql-server - 指定数据库名称与前一年

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:34 24 4
gpt4 key购买 nike

我有一些名为 DB2012、DB2013、DB2014、DB2015、DB2016 的数据库

我在下面的函数中有一个 select 语句

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

而且我每年都必须更改此代码以采用前一年,但我想使其通用并自动采用去年的数据库名称。我找不到该问题的任何解决方案。任何帮助将不胜感激。

最佳答案

正如我之前提到的那样,如果你想这样做,你将不得不使用动态 SQL。

我想提供两个可供选择的选项,让您的工作更轻松:

第一,如果不是真的需要,不要分离数据库。最好添加带有日期列或类似内容的过滤。如果将它与适当的分区相结合,您将获得出色的性能,并且管理起来会容易得多。

如果您选择分离数据库,则可能更容易在不同的数据库上创建 View ,以便更轻松地查询数据(尤其是如果您想从代码中使用 ORM 解决方案,而大多数 ORM 无法处理这种情况很容易)。

在该解决方案中,为使用来自多个其他数据库的表/ View 的查询创建一个新数据库。我们将这个新数据库称为“DBReporting”。

您可以在那里创建标准 View ,如下所示:

    select *, 2011 'year'
FROM DB2011.dbo.sales
UNION ALL
select *, 2012 'year'
FROM DB2012.dbo.sales

然后查询这个 View 。

您可以做得更好:以“分区 View ”的方式更改 View ,然后 SQL Server 知道如何使用它来启用删除和其他操作(也支持分布式分区 View 如果您的数据在多个服务器上)。您可以在这里阅读:https://technet.microsoft.com/en-us/library/ms190019(v=sql.105).aspx

这将使查询比使用动态 sql 更容易。

希望这对您有所帮助。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com