如何比较具有变量名称的数据库中的字段?

时间:2017-09-04 07:30:27

标签: sql-server tsql sql-server-2016

我需要返回一个字段' CreditAdvisor_PrimaryCode'来自数据库' DWH_Staging'其中一个领域' CooperationEndDate'来自数据库' DWH_Staging'没有匹配的领域' DatumUkonceni'来自具有变量名称的数据库。我们有一个程序' adm.MaxBatch'返回具有变量名称的数据库的实际名称。 我试过了:

DECLARE @db_is nvarchar(50)

SELECT @db_is = mb.DatabaseName
FROM adm.MaxBatch mb    
WHERE mb.SourceID = 1

PRINT @db_is

SELECT
    ca.CreditAdvisorCode_Primary
FROM 
    @db_is.CS_Prodejci prod 
    JOIN DWH_Staging.dim.CreditAdvisor ca 
        ON prod.KodOZ = ca.CreditAdvisorId
WHERE
    prod.KonecCinnosti <> ca.CooperationEndDateId   

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

从变量中选择数据库时,您需要为Eg创建动态:

DECLARE @db_is nvarchar(50),@string NVARCHAR(MAX)

SET @string='  Select   ca.CreditAdvisorCode_Primary 
               from '+@db_is+'..CS_Prodejci 
               JOIN DWH_Staging.dim.CreditAdvisor ca 
               ON prod.KodOZ = ca.CreditAdvisorId
               WHERE prod.KonecCinnosti <> ca.CooperationEndDateId '

  PRINT @string
  EXEC(@string)