2010-10-20 44 views
0

我正在SQL Server 2008中工作,我试图根据一定的条件选择到一个临时表...对于一个报告,我需要高达 18%的记录是某种产品类型。SQL服务器条件选择到临时表

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

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

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

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

+0

我试图避免这种情况的原因是因为这只是我创建的大量表格中的第一个......相当大的表格,所以选择进入会削减很多代码和努力:) – IWriteApps 2010-10-20 16:57:38

+0

@Gio啊..好吧,我给我的答案增加了另一种可能性。另外,你没有提到它是否在循环中? – Fosco 2010-10-20 17:41:33

+0

哦对不起,不在一个循环。 – IWriteApps 2010-10-20 17:49:55