在 FROM 语句中使用 Varchar 变量
Use Varchar variable in FROM statement
我想知道是否有办法在实用地为 Varchar 变量赋值后,在 From 语句中使用该变量?我们有存档 tables,它们会循环退出并返回。因此,table 可能会丢失几天,当他们循环返回时,他们会更改 table 名称以结束 w/当前年份(例如 012015,之前是 012014。)因此,我的查询可能会抛出对象错误,而且我是团队中唯一了解简单错误以及如何快速修复愚蠢问题的人。下面是我试图开始工作的解决方案,但我不断收到错误 "Must declare the table variable @Jan." 我完全理解 table 变量是什么以及如何使用它,这显然不是我想要的在这里做。有没有办法在 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
如果我解决了您的问题,您需要构建动态查询。所以在你的情况下它将是
DECLARE @qry VARCHAR(511)
SET @qry = 'Select WorkDte, SwitchNbr, SkillNbr,StaffTimeInSec, AvailableTimeInSec, ACDCallTotCt
,AbandonCallTotCt, AbandonCall1Ct, AnswerTimeInSec, ACDTalkTimeInSec,TotAcwTimeInSec, HoldTimeInSec
FROM ' + @Jan
EXEC (@qry)
我想知道是否有办法在实用地为 Varchar 变量赋值后,在 From 语句中使用该变量?我们有存档 tables,它们会循环退出并返回。因此,table 可能会丢失几天,当他们循环返回时,他们会更改 table 名称以结束 w/当前年份(例如 012015,之前是 012014。)因此,我的查询可能会抛出对象错误,而且我是团队中唯一了解简单错误以及如何快速修复愚蠢问题的人。下面是我试图开始工作的解决方案,但我不断收到错误 "Must declare the table variable @Jan." 我完全理解 table 变量是什么以及如何使用它,这显然不是我想要的在这里做。有没有办法在 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
如果我解决了您的问题,您需要构建动态查询。所以在你的情况下它将是
DECLARE @qry VARCHAR(511)
SET @qry = 'Select WorkDte, SwitchNbr, SkillNbr,StaffTimeInSec, AvailableTimeInSec, ACDCallTotCt
,AbandonCallTotCt, AbandonCall1Ct, AnswerTimeInSec, ACDTalkTimeInSec,TotAcwTimeInSec, HoldTimeInSec
FROM ' + @Jan
EXEC (@qry)