2015-04-19 50 views
1

我想知道是否有一种方法,在实际给Varchar变量赋值后,在From语句中使用该变量?我们有归档表,可以循环使用并返回。因此,表格可能会在几天内丢失,当它们循环返回时,它们会将表格名称更改为当前年份结束(例如012015,即012014之前。 )因此,我的查询可能会引发对象错误,并且我是我的团队中唯一一个了解简单错误以及如何快速修复这个愚蠢事情的人。下面是我试图去工作的解决方案,但我不断收到错误“必须声明表变量@Jan”。我完全理解表变量是什么以及如何使用它,这显然不是我想要在这里做的。有没有办法在From语句中使用varchar变量(或其他类似的变量类型)?代码如下:在FROM语句中使用Varchar变量

Declare @Jan Varchar(40) 

IF OBJECT_ID('ColTelephonyArchive.dbo.ACDSkill201401') IS NOT NULL 
Begin 
    Set @Jan = 'ColTelephonyArchive.dbo.ACDSkill201401' 
END 

    IF OBJECT_ID('ColTelephonyArchive.dbo.ACDSkill201501') IS NOT NULL 
     Begin 
      Set @Jan = 'ColTelephonyArchive.dbo.ACDSkill201501' 
     END 

      IF @Jan IS NULL 
       Begin 
        Set @Jan = 'Does.Not.Exist' 
       END 

Select WorkDte, SwitchNbr, SkillNbr,StaffTimeInSec, AvailableTimeInSec, ACDCallTotCt 
     ,AbandonCallTotCt, AbandonCall1Ct, AnswerTimeInSec, ACDTalkTimeInSec,TotAcwTimeInSec, HoldTimeInSec 
FROM @Jan 

回答

1

如果我得到你的问题的权利,你需要建立动态查询。所以你的情况这将是

DECLARE @qry VARCHAR(511) 
SET @qry = 'Select WorkDte, SwitchNbr, SkillNbr,StaffTimeInSec, AvailableTimeInSec, ACDCallTotCt 
    ,AbandonCallTotCt, AbandonCall1Ct, AnswerTimeInSec, ACDTalkTimeInSec,TotAcwTimeInSec, HoldTimeInSec 
FROM ' + @Jan 

EXEC (@qry) 
+0

这是一个好东西,作品,但它似乎没有,我不能插入来自EXEC(@qry)这些数据转化为以任何方式临时表或UNION它。 ..有可能联盟或存储EXEC的数据......或者它只能显示结果吗? – wlfente

+0

不要紧......我刚刚创建了一个表,并使用INSERT INTO #MyTempTable,正好在EXEC命令之上......完美地工作了 – wlfente

+0

感谢Alex A.你让我用正确的方向回答以上问题。让我的代码正在做我现在想要的... – wlfente