我正在使用SQL Server 2008,我正在尝试根据某个条件选择临时表...对于报告,我需要最多 18%的记录属于某种产品类型。
if ((@totalRecords * .18) > @productTypeCount)
select * into #tmpLP_REIT
from myTable where productType = @productType
else
select top 18 percent * into #tmpLP_REIT
from myTable where productType = @productType
我一直收到错误“数据库中已经存在一个名为'#tmpLP_REIT'的对象”,尽管我知道它不存在,因为当我尝试删除这样的表时,它指出它不存在。 我也在else子句中遇到此错误。
似乎它忽略了我的if语句,并通过创建第一个表,然后尝试再次创建它。有什么建议吗?
请先谢谢你。
答案 0 :(得分:1)
这个代码是否在一个循环中?如果它第二次发生的话会解释错误。如果没有,语法检查器必须只是窒息,因为它看到2个查询创建相同的表,没有意识到它是一个条件。
一种解决方案是首先创建表,然后将这两个查询的语法更改为insert into
个查询。
另一个解决方案是使用动态SQL ...在条件中构建正确的查询,然后执行它。这应该通过您当前正在触发的验证。