Sql 从临时表中删除所有值,而不是仅指定一个

Sql 从临时表中删除所有值,而不是仅指定一个,sql,ssrs-2012,Sql,Ssrs 2012,我试图设置一些数据驱动订阅,但遇到了一个问题。假设我想运行昨天的发票报告。共有四张发票,每张发票将包含任意数量的交易。报告将需要运行四次。我有以下代码将发票加载到#Temp。从那里,它应该循环发票,查询适当的信息,从#Temp中删除该发票,然后转到下一张发票 SELECT invoice INTO #Temp FROM dbo.InvoiceTable WHERE CreatedOnDate between today and yesterday --obv not real DECLARE

我试图设置一些数据驱动订阅,但遇到了一个问题。假设我想运行昨天的发票报告。共有四张发票,每张发票将包含任意数量的交易。报告将需要运行四次。我有以下代码将发票加载到
#Temp
。从那里,它应该循环发票,查询适当的信息,从
#Temp
中删除该发票,然后转到下一张发票

SELECT invoice
INTO #Temp
FROM dbo.InvoiceTable
WHERE CreatedOnDate between today and yesterday  --obv not real

DECLARE @Invoice VARCHAR(25) 

WHILE EXISTS(SELECT * FROM #Temp)

Begin

Select  top 1 @Invoice =  Invoice From #Temp  

select name, date, amount etc
where InvoiceNo = @Invoice

Delete from #Temp WHERE @Invoice = InvoiceNo

End

drop table #Temp

这一切似乎都有道理,当我在SSMS中运行它时,我会得到四个不同的结果集。但是,在设置数据驱动订阅时,它只运行该发票事务数的第一个发票号。九笔交易,九封电子邮件,所有相同的报告,其余三张发票没有其他报告。我的
存在时是否不合适?

循环看起来正常。您确定在指定的日期范围内dbo.InvoiceTable中有多张发票吗?@rwking I有。正如我所说,我可以在SSMS中运行它,并得到四个不同的结果集。因此,我认为它在SSR中不会有问题。您是将其作为存储过程执行,还是将代码嵌入到数据集中?只需将代码插入数据驱动的sub.no SP。