sql server条件选择进入临时表

时间:2010-10-20 16:43:46

标签: sql sql-server-2008 select conditional temp-tables

我正在使用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语句,并通过创建第一个表,然后尝试再次创建它。有什么建议吗?

请先谢谢你。

1 个答案:

答案 0 :(得分:1)

这个代码是否在一个循环中?如果它第二次发生的话会解释错误。如果没有,语法检查器必须只是窒息,因为它看到2个查询创建相同的表,没有意识到它是一个条件。

一种解决方案是首先创建表,然后将这两个查询的语法更改为insert into个查询。

另一个解决方案是使用动态SQL ...在条件中构建正确的查询,然后执行它。这应该通过您当前正在触发的验证。