我需要查询存储在两个不同SQL模式中的数据集,具体取决于我们如何接收数据。我已经创建了两个查询来查看数据集1和数据集2,并将数据格式化为两个单独的临时表(格式相同)。
我现在正在尝试执行第二步,即确定已填充哪个临时表,然后将该数据放入新的临时表中,以便继续执行步骤3。
为此,我正在尝试创建一个IF语句来计算我们接收到的数据集,但似乎无法使查询正常工作(即使我已经看到了其他人的类似查询的解决方案)。
这是我的代码:
IF object_id('tempdb..#Final_Prem') IS NOT NULL
BEGIN
DROP TABLE #Final_Prem
END
DECLARE @Command varchar(500)
DECLARE @DS1 AS FLOAT
DECLARE @DS2 AS FLOAT
SET @DS1 = (SELECT SUM(PREM) FROM #Dataset1 )
SET @DS2 = (SELECT SUM(PREM) FROM #Dataset2 )
IF (@DS1 IS NULL OR @DS1 = 0)
BEGIN
SET @Command = 'SELECT * INTO #Final_Prem FROM #Dataset2'
END ELSE BEGIN
SET @Command = 'SELECT * INTO #Final_Prem FROM #Dataset1'
END
EXECUTE (@Command)
SELECT * FROM #Final_Prem
我一直收到的错误是>
消息208,级别16,状态0,第18行无效的对象名称'#Final_Prem'
任何帮助将不胜感激,谢谢
我需要查询存储在两个不同SQL模式中的数据集,具体取决于我们如何接收数据。我创建了两个查询以查看数据集1和数据集2,它们的格式为...
您不能在动态查询中使用单哈希表。运行动态查询的会话与外部查询不同,因此无法访问它。
查询作为一个整体
您遇到范围问题。
您也可以将select语句也放置在动态SQL中,如下所示:
您也可以将select语句也放置在动态SQL中,如下所示: